Git post-receive 仅 checkout 那些在推送中修改/添加的文件?

标签 git

我一直在我的 git 存储库中使用 post-receive 脚本,使用以下命令 check out 存储库中的所有文件:

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

我想做类似的事情,但只检查在推送中修改或添加的文件。 checkout 文件后,接收后脚本将对这些文件运行一些其他命令,并在最后删除文件,以便目录为空。

这可能吗?

最佳答案

你可以使用 git diff 给你一个文件列表

git diff --name-only from..to

post-receive 中我想就是这样

git diff --name-only $1..$2

因为这个钩子(Hook)在标准输入上接收 oldrevnewrevref

关于Git post-receive 仅 checkout 那些在推送中修改/添加的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478792/

相关文章:

git - 为什么克隆公共(public) Git 存储库需要机器的 ssh key ?

git - 您如何配置 commitlint 以忽略某些提交消息,例如包含字符串 "WIP"的任何提交消息?

gitweb 变慢了

git - 使用 Source Tree,rebase with conflict,冲突解决后 rebase 不起作用

ios - 当我执行 git push origin master 时,为什么出现错误 : failed to push some refs to 'git@github.com:sshallow/FirstPod.git'

git - 在 git 中使用插件维护项目

ios - Github Actions - 在哪里上传证书和配置文件

Git push 不上传 .git 目录

git mergetool 告诉 "No files need merging"而不是冲突的文件

git - 您可以打开 pull 请求以将代码从 repo 添加到您的吗?