【Git】第五部分 分支操作(杀手功能)
5. 分支操作(杀手功能)
5.1 什么是git分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git 的分支模型极其的高效轻量的,是 Git 的必杀技特性,也正因为这一特性,使得Git 从众多版本控制系统中脱颖而出。
5.2 分支的操作
- 创建分支
git branch 分支名
(一开始默认指向master
)
-
git branch
如果不加任何参数运行,可以得到当前所有的分支的一个列表 切换分支
git checkout 分支名
-
git checkout -b 分支名
该指令创建一个分支并且指向新创建的分支,相当于合并git branch 分支名
和git checkout 分支名
-
git branch -D 分支名
强制删除分支 -
git branch -d 分支名
删除空的分支/删除已经被合并的分支 -
git log --oneline --decorate --graph --all
查看项目分支历史但是这个指令太长,我们可以配别名 :
git config --global alias.xx "yyy"
例如:将查看项目分支历史的指令改成
lol
,记得后面指令不要加git
git config --global alias.lol "log --oneline --decorate --graph --all"
下次使用直接:
git lol
-
git merge 分支名
合并分支
其实分支的本质就是一个提交对象!!!那个可变的指针实际是HEAD
HEAD
:是一个指针,它默认指向master
分支,当切换分支的时候其实就是让HEAD
指向不同的分支,每次有新的提交时,HEAD
都会带着当前指向的分支向前移动。
5.3 实际案例
工作流:
1. 开发某个网站。
2. 为实现某个新的需求,创建一个分支。
3. 在这个分支上开展工作。
正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:
1. 将当前的工作提交
2. 切换到你的线上分支。
3. 为这个紧急任务新建一个分支,并在其中修复它。
4. 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。
5. 切换回你最初工作的分支上,继续工作。
可以使用上述所说的自行进行操作,但是需要注意和知道的点:
- 假设你正在你的项目上工作,并且已经有一些提交。
- 现在你接到那个电话,有个紧急问题等待你来解决,我们可以创建一个新的分支,对紧急问题进行处理,在此之前需要留意你的工作目录和暂存区里那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止 Git 切换到该分支。 最好的方法是:在你切换分支之前,保持好一个干净的状态(也就是提交你所有的修改)
- 快合并:在合并的时候,有时候会出现”
快进(fast-forward)
“这个词。由于当前master
分支所指向的提交是你当前提交的直接上游,所以 Git 只是简单的将指针向前移动,当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)
”
- 典型合并:当前的合并和你之前合并 hotfix 分支的时候看起来有一点不一样。如图所示并不是顺着一个分支走下去能够到达另一个分支,遇到这种情况Git 会使用两个分支的末端所指的快照(C4 和 C5)以及这两个分支的工作祖先(C2),做一个简单的三方合并。
有时候合并,并不会那么的顺利在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。 Git 会暂停下来,等待你去解决合并产生的冲突,你可以在合并冲突后的任意时刻使用git status
命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件,当我们解决冲突后,使用git add ./
命令进行标记为冲突已被解决,合并后就可以删除分支。
例如看到下面这段代码,那我们就对version.txt
文件进行处理。
5.4 git 存储
当我们在做项目的时候,已经工作了一段时间,这时候我们想要切换到另一个分支做点事情,问题是:我们不想将这做了一半的工作进行提交,那么我们可以先将其存起来。
git stash list
:用于查看存储的gitgit stash
将未完成的修改保存到一个栈上,最好存一个不然很麻烦git stash apply
取出,如果有多个stash apply stash@{x}
- 当我们取出后要记得删除栈,不然会一直在,使用该指令
git stash drop
总结
以上就是今天要讲的内容,希望对大家有所帮助!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82914.html