(自己的老博客搬运)createdAt:2016-12-14 16:03:43
前言
因为怕代码被我玩坏。。。一直没用过branch。。。今天查了一波,把觉得比较有用的知识整理下~
创建分支
git branch dev #创建一个名叫dev的分支,dev不用加引号
git checkout dev #切换到dev分支
#上述两步可以合并为一步
git checkout -b dev #创建并切换到dev分支
查看分支
git branch #可以查看所有分支
#会看到如下输出,*代表当前处于那个分支下
* dev
master
在分支上提交
过程与普通的提交一样
比如对README.md进行了修改,想在dev分支上提交
首先要保证切换到分支下 git checkout dev
git add README.md
git commit -m "branch test"
切换分支
执行完4 就完成了在dev分支上的提交啦
现在我们可以git checkout master切换回主分支看看~
然后就会发现 README.me是修改前的样子~~~
【再切换回dev分支README.me又变成修改后了。我不会承认我来回切换了好多次哈哈哈。。。还是觉得很神奇的】
-
5.1.一个小思考
结合网友们的讨论,以及n多次的试验, 我发现如果对某个文件改动,但是不add就切换分支,工作区的改动都是在的(工作区说白了就是本地你看到的代码),即便是add了但不commit就切换分支也依旧如此。
而且如果你改动了某个文件,在分支A下
git add,但是在分支B下git commit的,最终这个修改是会记录在分支B下的。 这也算是一定程度上验证了我在"git修改撤销"那篇文章里画的图^ ^
那为什么在分支间的切换,本地的工作区代码会有不同呢?下面说下我的理解:
add+commit相当于是把改动从工作区【转移】到本地版本库的过程,就是说commit之后工作区就clear了。
- 对于工作区clear了的情况,工作区代码会显示成版本库最后一次commit的样子;
- 对于工作区不是clear的(就是有改动没有commit),工作区代码会将这些没commit的代码显示出来~
所以上面我玩的不亦乐乎的分支切换[捂脸]就是因为改动都commit了
工作区clear了两个分支就会分别显示各自最后一次commit的代码啦!^ ^
push新分支
接下来!如果想push这个新的分支以至于在github可以看到,就要执行这个带参数的push
git push --set-upstream origin dev
# 直接git push会报错的
# fatal: The current branch test has no upstream branch.
# To push the current branch and test the remote as upstream
分支合并
我发现好像大部分情况还是本地保留分支的,只是在分支上进行开发,然后合并到主分支上。
所以分支的合并显得尤为重要~~而且分支的合并还是有不同方式的 【感觉再写有点长了,想看分支的合并我们下一篇见吧~~^ ^】
参考: