Git - 分离头,修改提交和推动时落后的问题?

时间:2012-11-20 17:46:09

标签: git push pull git-submodules amend

我们的团队正在使用git子模块,但我们遇到了一些拉错误,这告诉我们即使我们最近更新了(并且自那以后也没有远程提交/推送)我们落后了。这种情况发生在两种情况下:

  1. 在我们的子模块中使用分离的HEAD
  2. 使用git commit --amend
  3. 我会尝试展示这些事情发生的情景。我的问题是,是否有人知道具体错误的位置,以及一种简单的方法(比我们的脏黑客更好)来修复它们?

    场景1 - 已分离HEAD

    1. 我们发出:
      1. git clone --recursive $REPO $DIR
      2. git sfe 'git pull origin master'
      3. git submodule update --recursive - 我们实际上没有使用过这么多,因为它往往会让我们处于分离的HEAD状态
    2. 我们使用master检查所有分支是否在HEAD(或至少未处于分离的git sfe 'git branch'状态)。如果没有,我们会发出git sfe 'git checkout master'。 (我们目前所有人(约4人)都在掌握开发,只是为了最大限度地减少必须合并以及启动和运行)
    3. 如果我们处于分离HEAD,请进行更改,然后切换到master(以便我们的非暂存文件保留在工作目录中),暂存并提交这些更改,然后尝试推送,Git说我们必须拉,因为我们落后了。我们可以解决这个问题:
      • 说'拧它',检查一个完全干净的超模块,确保我们没有分离HEAD,并从那里工作
      • 获取修订号git checkout master,然后发出git merge $REV,并重新合并当前更改的痛苦,以及过去在此处发生的更改。
    4. 场景2 - 修改提交

      1. 这个不多。我将自己开发,发出git commit --amend,然后尝试推动这些更改。但是,当我这样做时,它告诉我我落后并且必须合并。当我这样做时,再次将所有当前变化与过去的修订重新合并是一个痛苦的过程。
        • 这是因为我试图推送的内容基于不再是HEAD的提交吗?
      2. 注意git sfe是我们git submodule foreach --recursive的别名(我们有一些嵌套的子模块,仅用于受虐狂[或者更确切地说,我们需要能够分开代码输出和子子模块的位置是有意义的])

0 个答案:

没有答案