我尝试在GIT中实现预接收挂钩,以防止大型文件和指定的扩展文件(* .jar,* .zip)。
预接收挂钩执行一次接收操作。它不需要 参数,但对于每个ref都要更新它接收标准 输入以下格式的行:
(旧值)SP(新值)SP(ref-name)LF
其中(old-value)是存储在ref中的旧对象名, (new-value)是要存储在ref和中的新对象名 (ref-name)是ref的全名。在创建新的参考时, (旧值)是40 0。
如果用户更新现有分支中的文件,我们可以使用“git diff”命令获取更新文件列表。然后我只需要检查更新的文件。
但是对于新的分支创建,用户可以基于existig提交创建一个新的分支,并在本地存储库中进行一些更改然后推送。对于这种情况,我只想在现有提交后检查更改使用。任何GIT命令都可以帮助找出新分支的提交来源?
for exaple,用户创建分支2,基于分支1中的最新提交。之后,创建commit2和commit3。然后推动分支2。
挂钩,(旧值)为40 0; (new-value)是commit3; (ref-name)是branch2。我想得到commit1。
commit3 --branch2
commit2
commit1 - branch1
答案 0 :(得分:2)
我认为你正在寻找以前被推过的最近的祖先。但是,如果推送合并,则可能存在多个这样的祖先。所以我想你想检查这个命令输出的每个提交的差异:
git rev-list --boundary <new-commit> --not --all | sed -n 's/^-//p'