微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅当文件已在 git 中更改时才归档 GIT

如何解决仅当文件已在 git 中更改时才归档 GIT

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。