如何在git push之后对本地提交中修改的每个文件运行命令?

时间:2017-09-18 14:56:46

标签: git githooks

我有很多本地提交,其中包含几个修改过的文件。

我需要在推送到存储库后对每个修改过的文件运行一个特定的命令,这必须在客户端本身完成。

如何配置git来做同样的事情?

git log --name-only --format="" --author xxxx origin/master..HEAD | sort | uniq

上面的命令给了我所有提交的文件,但是相对于我的repo的路径。我需要来自root的绝对路径或者相对于我当前目录的路径。

1 个答案:

答案 0 :(得分:1)

  

我需要在推送后修改的每个文件上运行一个特定的命令   到存储库,这必须在客户端本身完成。

您可以使用post-receive挂钩。

  

上面的命令为我提供了所有提交的文件但是带有路径   相对于我的回购。我需要从根或绝对路径   一个与我当前目录相关的。

您可以使用readlink实用程序获取绝对路径。

readlink -f ./relativePath

在您的管道中,使用xargs,以便将文件路径传递给readlink

git log --name-only --format="" --author xxxx origin/master..HEAD | sort | uniq | xargs readlink -f