将主分支重新绑定到功能分支上,在rebase之后再次发生冲突

时间:2017-11-18 11:06:59

标签: git atlassian-sourcetree

我有一个功能分支,它是前一段时间从大师那里获得的。现在我想将master重新绑定到该功能分支,所以我做了这个命令:

git rebase master

然后我继续使用SourceTree,因为我遇到了冲突。我一个接一个地解决了它们,然后继续变相,这已经持续了一段时间。最后很开心一切都好了。

这是Sourcetree现在向我展示的内容:

enter image description here

当我跑步时

git rebase master

我得到了

Current branch 2FA is up to date.Current branch 2FA is up to date.

当我这样做时:

git pull

我得到了一份我必须重做的文件列表。

Auto-merging db/schema.rb
CONFLICT (content): Merge conflict in db/schema.rb
Auto-merging config/locales/nl.yml
CONFLICT (content): Merge conflict in config/locales/nl.yml
Auto-merging app/views/users/_form.html.haml
CONFLICT (content): Merge conflict in app/views/users/_form.html.haml
Auto-merging app/models/user.rb
CONFLICT (content): Merge conflict in app/models/user.rb
Auto-merging app/models/permission.rb
CONFLICT (content): Merge conflict in app/models/permission.rb
Auto-merging app/helpers/application_helper.rb
CONFLICT (content): Merge conflict in app/helpers/application_helper.rb
Auto-merging app/controllers/users_controller.rb
CONFLICT (modify/delete): app/controllers/companies_controller.rb deleted in HEAD and modified in 1110e1f18d4ab388eab767509d95be10b9953a36. Version 1110e1f18d4ab388eab767509d95be10b9953a36 of app/controllers/companies_controller.rb left in tree.
Auto-merging app/assets/stylesheets/custom.css.sass
CONFLICT (content): Merge conflict in app/assets/stylesheets/custom.css.sass
Auto-merging app/assets/stylesheets/backapp.css
CONFLICT (content): Merge conflict in app/assets/stylesheets/backapp.css
Auto-merging Gemfile.lock
CONFLICT (content): Merge conflict in Gemfile.lock
Auto-merging Gemfile
CONFLICT (content): Merge conflict in Gemfile
Automatic merge failed; fix conflicts and then commit the result.

这是为什么?我已经完成了搞清楚的工作。这种方式反叛似乎比合并更多的工作。

1 个答案:

答案 0 :(得分:0)

当您在master上重新设置功能分支时,您重写了该分支的历史记录。实际发生的是你在master分支上重播你的工作。一旦你完成了rebase,正常的做法就是强制将你的功能分支推送到遥控器:

git push --force origin feature

当您执行git pull时发生的事情是您告诉Git引入当前的远程feature分支,可能是通过合并策略。由于您刚刚重写了feature分支,因此Git将远程分支视为“新的”,至少考虑到甚至应该进行合并。在任何情况下,执行git pull都是不正确的,您可能需要的就是强行推送您的功能分支。

如果您想知道为什么甚至想要使用rebase而不是合并,事实证明rebase能够在功能分支中维护线性历史记录。这可能是有利的,因为它使分支的历史易于阅读。缺点是每个使用此分支的人都可能需要通过变基再做更多的工作。