Git - 合并未更新的分支

时间:2016-12-02 08:37:51

标签: git merge git-merge git-pull

假设我有两个分支,一个是新功能,另一个是测试。

我想在测试分支中合并新功能。问题是我的本地版本的测试分支没有更新上次更改,我忘记在合并新功能之前更新它。

发生的事情如下:

  • Git在我的本地版测试分支中合并了新功能。
  • 当我推动合并时,发生类似于另一次合并的事情,我认为远程更改。

我认为在推送期间发生了合并,因为现在我的测试分支中有远程更改。

是否可能或发生了其他事情?

我现在的情况是,我不确定测试分支到底有什么。基本上我不知道这个错误涉及到什么。

我不确定我是否理解发生的事情,所以我想请你更好地了解发生的事情以及如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

  • local test未使用remote test分支更新时。说,local test包含提交Aremote test包含提交A & B

    local test:  A
    remote test: A -> B
    
  • 合并feature分支local test。比如,功能包含提交P

    local test:  A -> P
    remote test: A -> B
    
  • 如果您想推local test,您应该遇到类似your test branch is behind origin/test的错误。

  • remote test拉入local test分支。

    $ git pull origin test
    
    local test:  A -> B -> P
    remote test: A -> B
    
  • 推送local test

    local test:  A -> B -> P
    remote test: A -> B -> P   
    

答案 1 :(得分:0)

  • 您已在本地new merge分支中合并test [在第一个子弹中提到],因此您现在new feature + test分支更改/提交test分支。

  • 现在当您推送test分支时,您的远程test分支也会在new feature中进行test + remote/test分支更改/提交分支。

答案 2 :(得分:0)

在推送更改之前,您可能执行了git pull origin test(将测试分支的远程更改集成到您的本地)。如果test分支上有一些更改,那么你会从git中得到消息:

  

更新被拒绝,因为遥控器包含您本地没有的作品。这通常是由另一个存储库推送到同一个ref引起的。您可能希望在再次推送之前首先集成远程更改(例如,'git pull ...')。