Mac在这里。这里是git的新手。上周我剪切了一个功能分支(从feature/my-feature-1
(主线)起名为development
,并让我所有的更改都在本地工作。
我现在想要合并任何已提交到development
的更改(因为我上周切断了我的功能分支)(包括解决任何合并冲突)然后推送我的可合并功能分支到远程git服务器(GitHub),以便我可以创建没有合并冲突的PR。
所以我做了所有最后的修改:
git add .
git commit -m "Final changes"
然后我切换到development
然后拉出来:
git checkout development
git pull
然后我切换回我的功能分支并尝试合并:
git checkout feature/my-feature-1
git merge development
看来vi
或vim
在我的终端中打开,我看到以下消息:
Merge branch 'development' into feature/my-feature-1
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
这对我没有意义!我不知道发生了什么事:
development
自动合并到我的功能分支中,并且发现没有冲突?答案 0 :(得分:2)
所以这里有一些你需要知道的事情
<强>合并强>
使用自动消息
创建合并提交Merge branch 'XXX' into YYY
如果需要,您可以更改信息。提交历史记录如下所示
<强>衍合强>
由于您从主分支中删除了feature
分支,我们假设您向功能分支F1
提交了F2
,D1
,D2
提交已在开发分支上完成。现在,如果您不想要合并提交,那么您需要对您的分支进行rebase,以便它看起来像是从D2
而不是之前的开发头提交中删除的,所以rebase会将您的提交更改为F3
,F4
并且由于您现在将基本提交设为D2
,因此您可以进行快进合并。
如果您使用github并创建拉取请求,那么您有几个选项
第一个选项Create a merge commit
是您通过命令行执行的操作。基本上它会创建一个新的合并提交
其他选项Squash and merge
,这会将所有提交合并到一个提交中,然后将其添加到您要合并到的分支中。这将仅通过1次提交
而Rebase and merge
会执行我在rebase
中已经解释过的内容。这将根据您在功能分支中提交的次数转发基本分支。
希望这能解释您的疑问,如果没有,请随时发表评论,我会更新答案
答案 1 :(得分:2)
是的,它成功完成了合并并解决了所有可合并的冲突(如果有的话)。在'git merge'命令之后vi打开的事实证明了它。
没有发现任何冲突。如果确实如此,如果它本身无法合并,它就不会打开vi,而是给出一条消息“找到冲突。请解决所有冲突并提交”。然后,你必须担心解决冲突和提交。请查看此link以了解如何解决冲突。
它确实合并,合并过程只等待您保存并在完成之前退出。作为此特定vi屏幕上的提示,如果要中止合并,或者不确定是否要继续进行任何更改,请删除所有行(:1,$ d),保存并退出。
答案 2 :(得分:0)
这是关于mergin分支的正常信息。您看到的窗口只是关于合并两个分支的注释。
简单地完成合并(seimcolon isn&t; t)是可选的:
[esc]
:wq
&#13;
您可以更改编辑器以使用vi / vim并选择nano或其他编辑器。根据您使用的IDE或操作系统,您始终可以使用软件进行合并。
使用rebase代替merge进行开发分支的更改(然后合并更改以从功能开发)是一种很好的做法。