如果有人在将我的工作合并到主人但没有推动之后将新的提交推送到git存储库的主人,我该怎么办?

时间:2017-10-16 05:37:39

标签: git merge

我刚刚开始使用GIT。考虑一个只有2名开发人员的小团队:devA和devB。

以下是该方案:

  1. 他们都基于提交ver-01工作。
  2. DevA承诺ver-02并推送到中央回购。
  3. DevB推送他/她的ver-03但失败了,所以devB获取了主人,现在有一个包含ver-03和origin / master的master,其中包含ver02。他/她将master与origin / master合并,现在有ver-04,其中包含ver-02和ver-03,然后通常将它推送到中央存储库。
  4. 我想知道的是,当DevB合并代码时,DevA推动了另一个版本05。因此,在DevB将他/她的主人与origin / master合并之后,他/她仍然无法推动,因为他/她必须解决ver-04和ver-05之间的冲突。如果我是DevB,我运行'git fetch origin master',但是我要运行什么命令才能合并?我尝试了'git merge origin master',但它告诉我'已经是最新的'。但是,当我推动它失败时。

    我发现实际上有3个分支:

    • master - >包含我的更改,即ver-03
    • origin / master - >包含最新的远程更改,即ver-05
    • HEAD - > origin / master - >包含ver-04,它与ver-02和ver-03合并。

    接下来我该怎么办?

1 个答案:

答案 0 :(得分:0)

首先,我会用以下方式备份我的工作: git checkout -b backup

回到主人: git checkout master

从远程拉出并解决冲突: git pull

推送更改: git push

我强烈建议你在分支机构工作(并避免像这样直接推向主人):

git checkout -b功能(创建新分支并对其进行结帐) git push -u origin feature(将分支推送到远程) git commit -am“Commit1”

现在您有两个选项(您在功能分支上): git rebase master(如果你在这个分支上独自工作) 要么 git merge master(如果其他人也使用分支)

解决冲突

git checkout master(移至主人)

git merge功能(将您的分支合并为主)

git push

如果您对主人做了一些小改动,您可以:

git stash(将您的工作保存在藏匿处)

git pull(将远程更改带到本地)

git stash apply(在远程更改之上应用您的更改)

解决冲突

git commit -m“消息”

git push