如何使用预提交钩子对子模块中的更改进行父项目提交?
我正在为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个声望。
答案 0 :(得分:0)
我仍然找到发生这种情况的原因。事实是,git add in pre-commit不适用于所有版本,对此有很多讨论。
Git add in pre-commit hook not staging file for commit
他的常见行为是他为更改建立索引,但是这些更改只会落入下一次提交。也就是说,您同时收到两个矛盾的消息,即已为更改编制索引,同时有新更改,但未编制索引。只是想补充一点,我花了2天时间寻找答案。