git要求我每次都想拉到我自己的分支

时间:2015-10-15 08:47:07

标签: git

我有这个分支:

当地:

 bugfix/VMS-172-back-arrow-on-activity-bar

远程:

origin/bugfix/VMS-172-back-arrow-on-activity-bar

所以我在本地添加了我的更改然后推送它。

然后我再次在本地进行了一些更改并推送它(我在提交时使用了git commit --amend)。但是这次git让我在推开前拉。为什么?

我的git日志:

commit f38a4d8828a2fadec3c62c08cc1c90ea66a719bd
Merge: 172968f 642178d
Author: degensharew <degensharew@myCompany.com>
Date:   Thu Oct 15 09:45:59 2015 +0300

    Merge branch 'bugfix/VMS-172-back-arrow-on-activity-bar'
    of myrepository into bugfix/VMS-172-back-arrow-on-activity-bar

    Conflicts:
        vms-mobile/app/src/main/java/AbstractActivity.java

commit 172968f6dcf533e43749986eba95a008c585bbb1
Author: degensharew <degensharew@myCompany.com>
Date:   Wed Oct 14 17:21:01 2015 +0300

    Fixed bug VMS-172.
    Avoided rounded corner style from search view.
    Style back arrow and title of action bar view.
    Disabled 'back action' from activity title. 

commit 642178d27bccbe9ea48c7d8ae123f1c8c01f921f
Author: degensharew <degensharew@myCompany.com>
Date:   Wed Oct 14 17:21:01 2015 +0300

    Fixed bug VMS-172.
    Avoided rounded corner style from search view.
    Style back arrow and title of action bar view.
    Disabled 'back action' from activity title. 

NB :我是唯一一个在这个分支上工作的人。

1 个答案:

答案 0 :(得分:2)

  

我在提交时使用了git commit --amend)。但是这次git让我在推之前拉。为什么呢?

当您使用git commit --amend时,您重写了本地分支中HEAD提交的历史记录。这意味着此时您的本地和远程分支机构之间存在分歧。

在提交修改之前:

remote: A <- B <- C
local:  A <- B <- C

提交修改后:

remote: A <- B <- C
local:  A <- B <- C'     (the apostrophe indicates a new commit)

由于您的本地分支已偏离远程分支,因此无法快进远程分支。实际上,您的最新提交位于与远程不同的基础之上,Git拒绝自动应用此提交。这里的两个解决方案是将您的本地分支合并到远程,或者 rebase 您在遥控器上的本地分支,然后将其推入。

至于为什么你被迫再次拉,这可能有很多原因。例如,如果你做了另一个提交修改,这可以解释它。承诺同一个分支的同事也可以解释它,但不是在你的情况下,因为你说你是唯一一个在这个分支工作的人。