合并时会发生什么,如果master和branch在bitbucket中都发生了变化

时间:2016-12-25 17:23:18

标签: github bitbucket git-branch git-merge git-merge-conflict

我在本地机器上有一个来自master的分支。我知道如何merge掌握回购的东西。但问题是这个。

认为其他一些开发人员通过推送对其进行更改来更改主存储库,同时我将通过分支将更改合并到主存储库。

  

在这种情况下会发生什么。

在这种情况下我该怎么办?我试图从我的分支机构做以下。

  • 添加了我的更改 - > git add *
  • 然后用 - >提交git commit -m "my commit"
  • 然后用 - >推送到我的分支机构git push -u origin my_branch_name
  • 然后使用 - >将存储库更改为master。 git checkout master
  • 然后将分支合并到主分区 - > git merge my_branch_name

到目前为止这是成功的。然后我尝试用以下命令推送(几分钟之前,另一位开发人员推动掌握)

  • git push origin master

然后它说了以下。

! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@bitbucket.org:abcdef/cups.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

在这个阶段,我该怎么办。

  1. 我应该在合并步骤后获得pull然后推送(在这个阶段,如果我得到一个拉动,会发生什么。)或
  2. 我是否必须执行git stash,然后push之类的事情。
  3. 希望你对此有所帮助。非常感谢你。

2 个答案:

答案 0 :(得分:1)

您需要拉remote/master(以获取所有远程更改),然后您就可以推送本地更改。

  1. 说,当你拉remote/master时有2次提交(A,B)

    remote/master: A -> B
    local/master:  A -> B
    
  2. 然后其他开发人员将提交P推送到主人

    remote/master: A -> B -> P
    local/master:  A -> B
    
  3. 然后您已在您的分支机构中提交X(例如feature

    remote/master: A -> B -> P
    local/master:  A -> B
    local/feature: A -> B -> X
    
  4. 现在将您的featurelocal/master

    合并
    remote/master: A -> B -> P
    local/master:  A -> B -> X
    local/feature: A -> B -> X
    
  5. 现在,您可以将remote/master提取到远程/主控的所有提交到本地/主控。

    remote/master: A -> B -> P
    local/master:  A -> B -> P -> X    # now local/master has P (sync with remote/master)
    local/feature: A -> B -> X  
    
  6. 将您的本地/主人推送到远程

    remote/master: A -> B -> P -> X
    local/master:  A -> B -> P -> X
    local/feature: A -> B -> X
    

答案 1 :(得分:0)

您需要检索已由其他人推送的作品,并在能够推送之前将其集成到本地。 你可以执行一个" git pull"直接或更好地执行" git fetch",然后是" git merge"或者" git rebase"。 获取的优点是允许您查看其他用户推送的提交。然后,您可以决定进行合并或变基。 rebase的优点是可以产生更清洁的"树。

如果您正在进行某些工作(已暂存的文件),则需要决定是否要在下次推送时将其集成。然后,您需要决定丢弃它们,将它们存储起来或将它们集成到下一次提交中。