我的系统是centos 7。
我使用
git ls-files
来获取 git 跟踪的文件。git lfs ls-files
获取 git-lfs 跟踪的文件。
但是在我的开发目录中,有一些文件夹和文件不应该被版本控制软件跟踪,例如
userdata
,upload/avatar
。当我部署到生产服务器时,这些文件是必需的,然后我想:
Git 有像
git clean -f -d
这样的好功能,但我不想删除只是列出那些文件。rsync -aH not_tracked_files root@production server:/home/mywebsite
。
我不知道如何在 rsync 脚本中获取
not_tracked_files
。
如何查找 git 未跟踪的文件
它们需要存储在另一个引用中(Git 存储库除外),并在部署过程中获取(涉及 rsync)
它可以是私有 Nexus 服务器,也可以是私有共享文件夹、远程驱动器(onedrive/Google 驱动器、AWS...),甚至是保管库,但它不应该是您当前的 Git 存储库。
挑战在于非“Git 不跟踪”文件的版本:如果它们不经常更改,则可以简单地静态存储一次,并在部署时检索。
如果它们定期更改,您需要在 Git 存储库中跟踪对这些文件的正确版本的引用(有点像 lfs 对大文件所做的那样,这些文件太存储在其他地方)
假设 stackoverflow 是我的网站。像你我这样的用户会上传头像。这些文件经常更改,不应该被 git 跟踪。
这些类型的工件很特殊,因为您通常只需要它们的最新版本。
它们可以在独立的参考中进行管理。例如,GitHub 通过自己的(历史上)服务来管理其头像
gravatar.com
。
这意味着您要部署的应该是:
您可以使用
git ls-files --others --ignored
查找非 git 跟踪的文件
命令:
rsync -av --files-from=<(git ls-files --others --ignored) MYDEST