git分支的操作命令
主分支的功能是完整的。我们有时候一开始,不是功能一下子就实现好,是需要一点一点才能完成,这个时候就添加一个分支,迭代下去,然后功能实现完成了,再合到主分支上去。多人合作,开发好各自负责的相应的功能后合到主分支上。有时候合并会产生冲突,可以新增一个节点,然后合并。
多个人并行开发,就拉各自的分支出去,做完了合并到主分支上去。
在进行多个并行作业时,通常会用到分支。
head指向最近一次的版本。
我们每提交一个版本,上面那个部分就往后挪动。以此类推。
版本回退,就往回挪动。以此类推。版本的所有历史记录都在的。
如果从版本2开始创建分支,现在就有2个分支。一个是master分支,一个是Dev分支
切换到分支Dev,就是把head挪动过去。
现在要在Dev提交版本。
Dev又提交版本了。
切换分支
提交新版本,合并分支
切换分支就是挪动head。
1.查看分支: git branch
星号的意思是 当前处在的位置。
2.创建分支: git branch 分支名
3.切换到分支: git checkout 分支名
4.创建并切换到该分支: git checkout -b 分支名
不同分支上可以做相应的事情。要合并后才能同步代码。
5.删除分支,不能删除当前所处分支,切换到其它分支再删除: git branch -d 分支名
6.合并某个分支到当前分支: git merge 分支名 ,合并时可能产生冲突,需要解决冲突。有时需要禁止快速合并,可执行:git merge --no-ff -m ‘描述’ 分支名
快速合并:
冲突:
我们把master和dev的main.c都改变了,谁前谁后呢???git不知道,产生了冲突。
自动合并失败
git会把两端的代码合在一块,我们自己去手动调整。
我们切到
下面是代表当前的main…c相比较于dev多出来的部分。
我们手动调整。
把那些提示符号删掉,自己调整代码逻辑,就算手动调整完成了。
如果我们在所处的分支中,修改了本地的项目代码,但是没有发送到暂存区和仓库,现在想转到其他分支,系统就会报错,转不成功。
如果这样修改了本地代码但是不发送到暂存区和仓库就切换到其他分支,会覆盖掉工作区的内容。
可以看后文的现场保护。
7.历史记录一行显示 : git log --pretty=oneline
8.以图表形式显示分支:git log --graph
9.保护现场 git stash,当前工作区有代码修改了,是不能切换到其他分支,可以先保存现场,再切换
(压栈保存)
10.列出所有保存的现场信息 git stash list
11.取出某次的现场信息,继续工作 :git stash pop “stash@{1}” ,默认是最近一次,如果有多个现场,也可以加上编号"stash@{1}"指定获取某一个。不同分支的现场,应该回到对应分支再获取,否则会自动合并现场到当前分支的工作区。
只有1个信息的话,直接pop出栈