git分支

git 分支

哈哈,分支好呀,做完事情后想负责就负责(合并),不想负责就提裤子走人。
1. 分支合并
git checkout -b 分支名 :如git checkout -b apple 创建一个apple新分支。
git branch :查看当前分支,它会列出所有分支,其中*号后的是当前所在分支,也就是head指向的分支。git默认主分支为master。
git checkout master :切换回主分支,head 会指向这个主分支。
git merge 分支名 :如git merge apple,它把apple 分支合并到当前的master分支下。
git branch -d apple :合并完后的分支,可以删除该分支了。
补充:分支这里的理论知识不明白的话就参考这篇博客吧。https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137584003
~~ 我是一个勤劳的搬运工~~
2. 分支合并冲突
如果新建分支grape对2.txt做了修改,且提交到本地仓库;切换到master主分支,同样对2.txt修改,并提交到本地仓库。此刻再用git merge grape 来将grape分支合并到master分支上是行不通的。会提示合并冲突,该怎么解决呢。
git merge grape :管他冲不冲突呢,我先合并了再说。
此时打开2.txt,画面是这样滴
git分支
我们删除那些奇怪的符号后是这样滴
git分支
然后保存,重新提交到本地仓库即可。
git log --graph --pretty=oneline --abbrev-commit :查看分支结构图。就是下图这样子。git分支
~~ 我是一个勤劳的搬运工,我劳动故我快乐,妈呀,快要放假回家了,开心~~

3. Fast foward模式和普通模式合并分支
git 合并分支默认是用Fast foward手段合并,但这种模式下,删除分支后,会丢掉分支信息。若要禁用这种模式,则可使用
git merge --no-ff 分支名 :表示禁用Fast foward.
二者的具体区别参照下图
git分支
git分支
git分支

4. BUG分支
软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在apple上进行的工作还没有提交(提交到暂存区)。不是你不想提交,而是还没有做完,apple限时一天做完,可是BUG只给你2个小。此时,你需要将当前工作现场储存起来。

git stash :储存工作现场
修复完成后,切换到master分支,并完成合并,最后删除issue-101分支。
git stash pop :恢复工作现场。
注意:如果你stash了多个工作现场,只想恢复某一个时。
git stash list :查看stash 内容。
git分支
git stash apply [email protected]{0}:恢复apple分支工作现场

5.强制删除分支
如果你完成了一个新的分支,并且已经提交到本地仓库,现已切换到master主分支准备合并,可是你的Boss突然和你说,不做这个项目了,不做了?不做了。不做了!
git分支
你此刻忍着悲痛的心情敲出了git branch -d apple,但是git竟然告诉你,该分支没有合并不能删,可是这个apple分支是机密性文件,不能合并呀。
git branch -D apple :强制删除apple分支。
6.多人协作
git remote :查看远程库信息
git remote -v :查看远程库详细信息
git push origin master :向远程库origin中推送master分支
git push origin apple :向远程库origin中推送apple分支
注意:主分支和开发分支往往是必须要推送到远程仓库的,因为你的同事们要一同协作开发。但是BUG分支和一般功能分支就没有必要推送了,你完全可以自己藏着玩。
该功能我暂时还用不到,把链接放这儿啦,以后学习:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013760174128707b935b0be6fc4fc6ace66c4f15618f8d000