合并分支到 master
一般开发都是在本地新建自己的分支,然后将修改的代码提交到分支上,最后 push 到远程比如 gitlab 或 github,提交 merge 请求。
但是如果在你开发的过程中,有其他人合并代码到主分支,当你提交合并请求时,就会遇到冲突,无法合并。
如下图所示:
处理冲突
可以使用如下步骤进行冲突处理,我使用的代码编辑器是 vscode
首先切换到你的分支,然后执行如下命令:
git fetch origin
git checkout origin/master
git merge --no-ff ryan_add_install_tips_when_click_download_button
以上操作执行后,会可以在 vscode 中看到你需要处理的冲突文件
删除不需要的内容
重新 commit 并push 到远程的分支上即可
git push origin HEAD:ryan_add_install_tips_when_click_download_button
如何撤销一个合并
你应该始终牢记,你可以在任何时间执行撤销操作,并返回到你开始合并之前的状态。要对自己有信心,你不会破坏项目中的任何东西。只要在命令行界面中键入 “git merge –abort” 命令,你的合并操作就会被安全的撤销。
git fetch 从远端仓库下载新分支与数据 git pull 从远端仓库提取数据并尝试合并到当前分支
Git 有两个命令用来从某一远端仓库更新。 git fetch
会使你与另一仓库同步,提取你本地所没有的数据,为你在同步时的该远端的每一分支提供书签。 这些分支被叫做“远端分支”,除了 Git 不允许你检出(切换到该分支)之外,跟本地分支没区别 —— 你可以将它们合并到当前分支,与其他分支作比较差异,查看那些分支的历史日志,等等。同步之后你就可以在本地操作这些。
第二个会从远端服务器提取新数据的命令是 git pull
。 基本上,该命令就是在 git fetch
之后紧接着 git merge
远端分支到你所在的任意分支。 我个人不太喜欢这命令 —— 我更喜欢fetch
和 merge
分开来做。少点魔法,少点问题。 不过,如果你喜欢这主意,你可以看一下 git pull
的 官方文档。
假设你配置好了一个远端,并且你想要提取更新,你可以首先执行 git fetch [alias]
告诉 Git 去获取它有你没有的数据,然后你可以执行 git merge [alias]/[branch]
以将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支。 那么,如果我是与两三个其他人合作 Hello World 项目,并且想要将我最近连接之后的所有改动拿过来,我可以这么做:
可以看到自从上一次与远端仓库同步以后,又新赠或更新了五个分支。 “ada”与“lisp”分支是新的,而“master”、“clang”与“java”分支则被更新了。 在此例中,我的团队在合并入主分支之前,将提议的更新推送到远端分支以审核。
你可以看到 Git 做的映射。远端仓库的主分支成为了本地的一个叫做“github/master”的分支。 这样我就可以执行 git merge github/master
将远端的主分支和并入我的本地主分支。 或者,我可以 git log github/master ^master
看看该分支上的新提交。 如果你的远端仓库叫做“origin”,那远端主分支就会叫做 origin/master
。几乎所有能在本地分支上执行的命令都可以在远端分支上用。
如果你有多个远端仓库,你可以执行 git fetch [alias]
提取特定的远端仓库, 或者执行 git fetch --all
告诉 Git 同步所有的远端仓库。
简而言之 执行 git fetch [alias]
来将你的仓库与远端仓库同步,提取所有它独有的数据到本地分支以合并或者怎样。
当你解决完冲突,并且在合并完成后发现一个错误,你仍然还是有机会来简单地撤销它。你只须要键入 “git reset –hard ” 命令,系统就会回滚到那个合并开始前的状态,然后重新开始吧!