只有在文件以GIT更改的情况下才进行GIT存档



我们使用git archive在跳转服务器上部署脚本,而跳转服务器则使用rsync在目标机器上部署这些文件。git归档cronjob每24小时运行一次,从git归档的文件每次都会在跳转服务器上获得新的创建日期。Rsync现在同步所有这些文件,这些文件实际上没有更改。如果文件没有在git中更改,有没有办法告诉git archive不要替换跳转服务器上的文件?

您可以将文件列表传递给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

相关内容

最新更新