我们的团队正在使用git子模块,但我们遇到了一些拉错误,这告诉我们即使我们最近更新了(并且自那以后也没有远程提交/推送)我们落后了。这种情况发生在两种情况下:
HEAD
或git commit --amend
。我会尝试展示这些事情发生的情景。我的问题是,是否有人知道具体错误的位置,以及一种简单的方法(比我们的脏黑客更好)来修复它们?
场景1 - 已分离HEAD
git clone --recursive $REPO $DIR
git sfe 'git pull origin master'
git submodule update --recursive
- 我们实际上没有使用过这么多,因为它往往会让我们处于分离的HEAD
状态master
检查所有分支是否在HEAD
(或至少未处于分离的git sfe 'git branch'
状态)。如果没有,我们会发出git sfe 'git checkout master'
。 (我们目前所有人(约4人)都在掌握开发,只是为了最大限度地减少必须合并以及启动和运行)HEAD
,请进行更改,然后切换到master
(以便我们的非暂存文件保留在工作目录中),暂存并提交这些更改,然后尝试推送,Git说我们必须拉,因为我们落后了。我们可以解决这个问题:
HEAD
,并从那里工作git checkout master
,然后发出git merge $REV
,并重新合并当前更改的痛苦,以及过去在此处发生的更改。场景2 - 修改提交
git commit --amend
,然后尝试推动这些更改。但是,当我这样做时,它告诉我我落后并且必须合并。当我这样做时,再次将所有当前变化与过去的修订重新合并是一个痛苦的过程。
HEAD
的提交吗? 注意:git sfe
是我们git submodule foreach --recursive
的别名(我们有一些嵌套的子模块,仅用于受虐狂[或者更确切地说,我们需要能够分开代码输出和子子模块的位置是有意义的])