工作场景
工作场景中我们常常会遇到以下情况:
小明:靓仔/妹,我上线那天有事情,我的那个分支你帮我一起推一下
摸鱼崽:帮我也合一下,好哥哥
我:好(你)呀(md)
如果在这种时候你说我不会,我只会add,commit、push我本地的,你的分支我哪儿会啊,是不是有点尴尬(面子不重要,技术不能被怀疑啊喂!)
下面我们就来说说合并Git多fetch的方法
合并多分支
1.首先,确保你已经将远程仓库添加为本地仓库的远程源
git remote add <remote_name> <remote_url>
#remote_name 是你给远程仓库起的名称,remote_url 是远程仓库的 URL
2.使用 git fetch 命令从远程仓库获取最新的更新,可以获取多个远程分支的更新
git fetch <remote_name> <branch_name1> <branch_name2> ...
#branch_name1、branch_name2 等则是远程仓库的分支名称。
3.这样,就可以将多个branch的更新合并到本地仓库进行提交啦,不过需要注意一下,在你将别人的分支fetch到本地后,虽然你在本地已经有了那个分支的最新代码,但是它还不在你本地分支的历史记录中。如果你直接进行add、commit、push的操作,相当于是在本地创建了一个全新的提交记录,它没有与远程分支的历史记录合并,这样会导致远程分支和本地分支出现分歧,而且在将来的合并操作中可能会导致冲突
为了避免这种问题,你需要使用git merge命令将远程分支合并到本地分支中。这将在本地分支的历史记录中创建一个新的提交记录,该记录包含远程分支的最新更改,同时保留了本地分支的更改。这样就可以确保你的本地分支与远程分支的历史记录保持同步,减少未来合并操作中出现冲突的可能性
解决冲突
如果不出意外的话意外就发生了,你在合并的时候遇到冲突了,虽然心里一万头那个什么马在奔腾,咱还是得耐着性子去解决,总不能把人家请假的人拉回来吧
1.确认冲突:使用git status命令查看当前仓库状态,确认哪些文件发生了冲突,控制台输出大概如下
On branch fail_brach #出现问题的分支
You have unmerged paths.
(fix conflicts and run "git commit")
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: moyuzai.py #存在冲突的文件
no changes added to commit (use "git add" and/or "git commit -a")
2.切换到目标分支:使用git checkout命令切换到目标分支,例如:git checkout main。
3.合并分支:使用git merge命令合并需要合并的分支,例如:git merge feature_branch
举例:如果你现在在feature_branch分支中,想要将main分支合并到feature分支中,需要先执行命令git checkout main,切换到main分支中,再执行git merge feature_branch命令
4.解决冲突并提交:去打开发生冲突的文件,手动解决冲突(好像解决掉制造冲突的人),并将解决冲突后的文件add到暂存区,然后commit
5.切换回原分支:使用git checkout命令切换回原分支,例如:git checkout Mybranch
6.合并分支:再次使用git merge命令将目标分支合并到当前所在分支中,例如:git merge XXX
7.如果这时候还有冲突,重复步骤4
8.再次提交更改,并push到对应的远程仓库