如何找到 git 未跟踪的文件,然后 rsync 这些文件?

问题描述 投票:0回答:2

我的系统是centos 7。

我使用

git ls-files
来获取 git 跟踪的文件。
并使用
git lfs ls-files
获取 git-lfs 跟踪的文件。

但是在我的开发目录中,有一些文件夹和文件不应该被版本控制软件跟踪,例如

userdata
upload/avatar

假设 stackoverflow 是我的网站。像你我这样的用户会上传头像。这些文件经常更改,不应该被 git 跟踪。

当我部署到生产服务器时,这些文件是必需的,然后我想:
Git 有像

git clean -f -d
这样的好功能,但我不想删除只是列出那些文件。
rsync -aH not_tracked_files root@production server:/home/mywebsite

我不知道如何在 rsync 脚本中获取

not_tracked_files

git
2个回答
0
投票

如何查找 git 未跟踪的文件

它们需要存储在另一个引用中(Git 存储库除外),并在部署过程中获取(涉及 rsync)

它可以是私有 Nexus 服务器,也可以是私有共享文件夹、远程驱动器(onedrive/Google 驱动器、AWS...),甚至是保管库,但它不应该是您当前的 Git 存储库。

挑战在于非“Git 不跟踪”文件的版本:如果它们不经常更改,则可以简单地静态存储一次,并在部署时检索。
如果它们定期更改,您需要在 Git 存储库中跟踪对这些文件的正确版本的引用(有点像 lfs 对大文件所做的那样,这些文件太存储在其他地方)


假设 stackoverflow 是我的网站。像你我这样的用户会上传头像。这些文件经常更改,不应该被 git 跟踪。

这些类型的工件很特殊,因为您通常只需要它们的最新版本。
它们可以在独立的参考中进行管理。例如,GitHub 通过自己的(历史上)服务来管理其头像

gravatar.com

这意味着您要部署的应该是:

  • 参考头像
  • 一个程序能够在部署后从其参考中获取化身,并在需要时在生产服务器上复制/更新它们。

0
投票

您可以使用

git ls-files --others --ignored

查找非 git 跟踪的文件

命令:

rsync -av --files-from=<(git ls-files --others --ignored) MYDEST

© www.soinside.com 2019 - 2024. All rights reserved.