如何在不从GIT存储库中提取的情况下合并更改?

时间:2014-09-19 00:01:22

标签: git github merge

谢谢你的期待。我毫不怀疑我可能在我的问题中使用了错误的术语,所以让我解释一下这个问题:

  1. 开发人员A将代码检入GIT。
  2. 稍后,开发人员B将代码检入GIT,并以某种方式用开发人员B也编辑过的旧类文件覆盖开发人员代码。可能,开发人员B在pull之前没有push
  3. 开发人员A有新的工作来检查,提交,拉动,推动。 GIT说它是一个成功的" (没有标记合并问题)
  4. 开发人员A回到他的代码,现在不能构建,因为我在第一次办理登机手续时所做的突然工作现在已经丢失了。
  5. 所以,这是我的问题。我使用this SO postreset我的代码实例到我上次成功提交的代码(上面的步骤3)并且效果很好。所以现在我可以建立并且我的所有工作再次成为现实。

    问题

    虽然我的代码的本地副本现在看起来很棒,但我不能{GIT} {G} {而不是首先执行回购中已有的push。不幸的是,当我执行pull时,我的所有工作都被覆盖了,并没有给我合并的机会。

    有什么建议吗?

4 个答案:

答案 0 :(得分:1)

如果强制推送已经发生,如果您认为您的盒子上的仓库状态是您希望存储库所处的状态,那么只需再次执行git push -f

答案 1 :(得分:1)

为什么不将本地更改分支到单独的分支。将回购拉到你的主分支。在本地合并。然后推回回购?

答案 2 :(得分:1)

是的,您可以在没有拉动的情况下在本地合并更改,然后在修复混乱后将其推回到远程仓库。

我相信远程仓库中的图表是:

C1 - C2 

你当地的git是:

C1 - C1'

因为你的C1'不是基于C2的任何东西,所以你不能提交(除非你强行执行)

您可以通过首先git fetch将本地git图更新到下面来修复此问题:

C1 - C1' (local/master)
  \- C2 (origin/master)

然后你可以通过

合并
git merge origin/master

你可能会遇到冲突。修复完所有内容后,您应该得到如下图表:

之后

C1 - C1'    ----------       C3 (local/master)
  \- C2 (origin/master)     -/

然后你应该能够在没有--force

的情况下推进

答案 3 :(得分:1)

来自git help push

For a failed update, more details are given:  
rejected  
   Git did not try to send the ref at all, typically because it is not a fast-forward and you did not force the update.  
remote rejected  
   The remote end refused the update. Usually caused by a hook on the remote side, or ...
  1. 您必须遵守上述规则才能推送(即您不得违反Git历史记录,松散提交......)
  2. 你应该(几乎)不要强行推动。
  3. git pull命令是git fetch && git merge的快捷方式(如果使用git rebase选项,则为--rebase)。因此,您可以先获取然后手动合并远程更改。
  4. git status告诉您是否在上游后面,如果您可以轻松更新分支:

    Your branch is behind 'origin/master' by 4 commits, and can be fast-forwarded.
      (use "git pull" to update your local branch)
    

    Git-prompt非常方便快速了解是否存在远程更改以进行检索和合并。请参阅u-4后的提示中的“git fetch”以及git log ..@{u}报告的四个传入提交的列表:

    (master $ u= origin/master)]$ git fetch
    
    (master $ u-4 origin/master)]$ git log ..@{u} --oneline
    7edead8 NXP-15160 fixing test class path for redis test-jar
    d507b6f NXP-15160 renamed cache component
    aaf64ab NXP-15161 re-worked redis feature activation
    23b1d2c NXP-15254: use concurrent hash maps to avoid locks on service access