如何使用预committer钩子通过子模块中的更改来提交父项目

时间:2018-12-26 04:38:24

标签: git git-submodules git-bash

如何使用预提交钩子对子模块中的更改进行父项目提交?

我正在为git开发一个预提交钩子,对开发人员进入其本地汽车上的子模块-更改文件-返回父项目并进行git add的情况进行建模。和git commit之后,这个钩子起作用了。钩子的整个文本无关紧要,只保留所需的部分。

使用git子模块foreach
1)吸引子模块
2)我索引更改
3)提交 实际上,当我制定一个挂钩时,我看到在子模块中创建了一个新的提交 在4个步骤中,我尝试通过简单的git add deploy(这是子模块的名称)来索引父项目中的更改。

我一次看到两条消息
1)更改已编入索引,并且属于提交
2)子模块中有新的提交,您需要更新(??????),并且没有任何更改会落入提交中 从屏幕编号1可以看到,对服务器的更改没有到达

https://b.radikal.ru/b12/1812/1b/7d23ee4e948b.jpg

在屏幕编号2上 我正在运行git status再次查看这些消息,但是只剩下一条消息-一切就绪并已建立索引-提交

https://d.radikal.ru/d13/1812/ad/7c2201d4f68d.jpg

在屏幕3上,我再次执行提交,然后该提交出现在父项目中

https://b.radikal.ru/b36/1812/2c/3e133ddf3a45.jpg

问题是为什么它第一次无法解决?破坏整个堆栈。仅开始使用子模块。希望对您有所帮助。

很抱歉,链接会告诉您10个声望。

1 个答案:

答案 0 :(得分:0)

我仍然找到发生这种情况的原因。事实是,git add in pre-commit不适用于所有版本,对此有很多讨论。

Git add in pre-commit hook not staging file for commit

他的常见行为是他为更改建立索引,但是这些更改只会落入下一次提交。也就是说,您同时收到两个矛盾的消息,即已为更改编制索引,同时有新更改,但未编制索引。只是想补充一点,我花了2天时间寻找答案。