在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发,例如:
在初始化本地Git仓库的时候,Git默认已经帮我们创建了一个名字叫做master的分支。通常我们把这个master分支叫做主分支。
在实际工作中,master主分支的作用是:用来保存和记录整个项目已完成的功能代码。
因此,不允许程序员直接在master分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃,因此我们需要在自己负责开发的分支上进行开发
由于程序员不能直接在master分支上进行功能的开发,所以就有了功能分支的概念。
功能分支指的是专门用来开发新功能的分支,它是临时从master主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到master主分支上,如图所示:
使用如下的命令,可以查看当前Git仓库中所有的分支列表:
git branch
注意:分支前面的*表示当前所处的分支
使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样:(所以开发时我们需要在主分支上创建新分支)
git branch 分支名称
使用如下的命令,可以切换到指定的分支上进行开发:
git checkout 分支名称
使用如下的命令,可以创建指定名称的新分支,并立即切换到新分支上:
1 #-b表示创建一个新分支
2 # checkout表示切换到刚才新建的分支上
3 git checkout -b 分支名称
功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到 master主分支上:
1 切换到master分支
2 git checkout master
3在 master 分支上运行 git merge 命令,将要合并分支的代码合并到 master分支
4 git merge 分支名称
当把功能分支的代码合并到master主分支上以后,就可以使用如下的命令,删除对应的功能分支:
git branch -d 分支名称
如果在两个不同的分支中,对同一个文件进行了不同的修改,Git就没法干净的合并它们。此时,我们需要打开这些包含冲突的文件然后手动解决冲突。
1#假设:在把reg分支合并到 master分支期间,代码发生了冲突
2 git checkout master
3 git merge reg
发生冲突:
打开冲突的文件手动解决(也可以使用vs code的辅助解决(红色圈里面))
#打开包含冲突的文件,手动解决冲突之后,再执行如下的命令
git add .
git commit -m“解决了分支合并冲突的问题"
git merge 分支名称
如果是第一次将本地分支推送到远程仓库,需要运行如下的命令:
1#-u表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带-u参数
2 git push -u 远程仓库的别名 本地分支名称:远程分支名称
3
4#实际案例:
5 git push -u origin payment: pay
6
7#如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化:
8 git push -u origin payment
如果不是第一次将本地分支推送到远程仓库,需要运行如下的命令:
则切换到要推送的分支后直接git push 就可以将本地分支推送到远程仓库
git remote show 远程仓库名称
跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下:
可以使用如下的命令,把远程分支最新的代码下载到本地对应的分支中:
1#从远程仓库,拉取当前分支最新的代码,保持当前分支的代码和远程分支代码一致
2 git pull
可以使用如下的命令,删除远程仓库中指定的分支:
1 #删除远程仓库中,指定名称的远程分支
2 git push 远程仓库名称 --delete 远程分支名称
3 #示例:
4 git push origin --delete pay