我有两个新的远程分支签出,一个分支(crm-mania
)已经有几个月了,我试图将它重新绑定到主开发分支(master
)。所以我有以下内容:
vagrant@localhost /var/www/current (crm-mania)$git branch
* crm-mania
master
然后我执行以下操作:
vagrant@localhost /var/www/current (crm-mania)$git checkout master
Switched to branch 'master'
vagrant@localhost /var/www/current (master)$git pull
Already up-to-date.
然后我尝试了rebase,我得到以下内容(以及我已经删除的其他消息):
vagrant@localhost /var/www/current (master)$git rebase master crm-mania
First, rewinding head to replay your work on top of it...
Applying: CRM-174: Mania Site
Using index info to reconstruct a base tree...
M app/AppKernel.php
M app/config/config.yml
M app/config/routing_crmpicco.yml
<stdin>:107: trailing whitespace.
<?php
<stdin>:108: trailing whitespace.
/**
<stdin>:109: trailing whitespace.
* @author CRMPicco <crmpicco@crmpicco.co.uk>
<stdin>:110: trailing whitespace.
* @date 02/04/2015
<stdin>:111: trailing whitespace.
* @copyright Copyright (c) CRMPicco.
warning: squelched 1022 whitespace errors
warning: 1027 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging app/config/routing_crmpicco.yml
Auto-merging app/config/config.yml
CONFLICT (content): Merge conflict in app/config/config.yml
Auto-merging app/AppKernel.php
Failed to merge in the changes.
Patch failed at 0001 CRM-174: Mania Site
The copy of the patch that failed is found in:
/var/www/releases/20150708141200/.git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
我遇到的主要问题是 HEAD现已分离,例如
vagrant@localhost /var/www/current (HEAD)$git status
# HEAD detached at e90cb5c
我还发现,如果我忽略了这条消息,并试图解决我的冲突,Git正在认识到&#34;冲突&#34;在代码中,我只处理过并且只驻留在我的crm-mania
功能分支中。它们绝对不在master
分支中。
答案 0 :(得分:2)
我遇到的主要问题是HEAD现已分离
这是预期的行为。 git rebase
的工作方式是直接检出目标SHA,它将您置于分离的HEAD中。这恰巧是ours
和theirs
在git rebase
情景中与正常情况相反的原因。
每当您在rebase期间发生合并冲突时,您将始终处于分离的HEAD状态。如果您edit
交互式rebase中的任何提交,也会发生这种情况。
至于为什么你会看到意想不到的冲突,如果没有看到两个分支的变更日志就不可能说。通常答案是“其他人修改了代码而我没有意识到”。