git - 预提交钩子(Hook)用于检查 git 中的版本

标签 git github hook pre-commit

我计划编写一个预提交 Hook 。从文件分支出来后,它应该检查主分支是否有任何版本。

示例。 1 月 1 日,文件 abc.txt 从 master 分支出来。比如说,分支名称是 BR1.X。在 BR1.x 分支上,该文件一直工作到 1 月 10 日。在 MAster 分支上,据说 1 月 5 日发生了一些更改。因此,预提交应该只给出一条消息,说明分支后主服务器上发生了更改。请帮助如何从 git 获取这些详细信息?

最佳答案

  1. 查找当前分支和主分支的共同祖先:

    ANCESTOR=`git merge-base HEAD master`
    
  2. 查找暂存以供提交的文件:

    STAGED=`git diff --cached --name-only --diff-filter=ACM`
    
  3. 检查这些文件是否在 master 上被修改:

    git diff --name-only $ANCESTOR master $STAGED
    

并利用这些信息做任何你需要做的事情

关于git - 预提交钩子(Hook)用于检查 git 中的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31554230/

相关文章:

git - 使用 git reset --hard "commit id",现在我的 HEAD 已分离

github - 使用 github 工作流程进行 JSON 验证

Git:运行需要访问存储库中所有文件的脚本的更新后 Hook

java - Xposed模块,ClassNotFoundException动态加载类

git - 在 Github 中推送新代码的问题

regex - 通过 `git rebase` 中的提交消息删除提交

windows - 从 github 克隆存储库失败

c++ - 在 Windows 中检索全局钩子(Hook)链

php - Capistrano 上传 .git 目录

git - 为什么 GitHub HTTPS 方案总是要求我输入密码?