我们使用 git archive 在跳转服务器上部署脚本,然后使用 rsync 在目标机器上部署这些文件。git 归档 cronjob 每 24 小时运行一次,并且来自 git 的归档文件每次都会在跳转服务器上获得一个新的创建日期。Rsync 现在同步所有这些文件,实际上并没有改变。如果文件没有在 git 中更改,有什么方法可以告诉 git archive 不要替换跳转服务器上的文件?
问问题
51 次
1 回答
1
您可以将文件列表传递给git archive
:
git archive -o ../myarchive.tgz -- path/to/file1 path/to/file2
您可以将其与git diff --name-only
:
# - diff-filter=AM: list only Added or Modified files (not Deleted ones)
# - --no-renames: turn off rename detection, you don't want to overlook files that are flagged
# as renamed or copied
git archive ... -- $(git diff --no-renames --diff-filter=AM --name-only [previouscommit] HEAD)
请注意,这仅包括创建和修改的文件,如果您还需要删除文件,则需要额外的删除步骤:
# delete files listed in :
git diff --no-renames --diff-filter=D --name-only [previouscommit] HEAD
于 2021-03-31T12:44:38.617 回答