【狂神说Java】Git最新教程通俗易懂_哔哩哔哩_bilibili
Git 分支实际上是指向更改快照的指针。这也是和svn等分支(独立目录)的根本区别之一。
其中Master是默认就存在的一个分支,我们叫它主分支。一般很多人会觉得这个Master系统保留的分支应该有其特殊之处,但是实际上Master和其他分支一样没有啥特殊之处,无非他是必须有的分支,这个名称也可以通过git远程仓库修改默认配置,改为阿猫阿狗都没有问题。这个分支也可以删,但是需要特殊设置下。
Git中分支说明
(1)查看分支命令
git branch
查看远程的分支命令
git branch -r
(2)新建分支命令
git branch [分支名称]
新建分支之后,我们可以看到多了一个分支“dev”。
(3)切换分支命令
git checkout [分支名称]
运行命令切换分支之后,我们可以看到此时的分支为“dev”。
(4)删除分支命令
git branch -d [分支名称]
运行命令删除分支之后,我们可以看到:
(5)多个分支如果并行执行,就会导致我们的代码不冲突,也就是同时存在多个版本。
解决方案:如果发生冲突,就需要协商选择要保留他的代码还是你的代码?
master主分支应该非常稳定,用来发布新版本,一般情况下不运行在主分支上面工作。工作一般情况下都是在新建的分支上进行工作的,工作完成之后,比如分支代码稳定后可以合并到主分支上。
合并分支命令:
git merge [branch]
Merge与rebase操作的处理方式完全不同,实际上merge比rebase更简单。假设,我们想要想在分支branch-1添加master中的变化(6,8)变化,不用rebase提交历史变为7结束。这种情况下使用merge,而在我们的日常实践中也是merge更常用些。
merge有两种方法:快进和非快进。快进是将分支的指针移动到我们想要合并的分支。快进方法有时候会不能用,比如我们上面的列子中就不能将branch-1移动到master提交,因为这样会导致commit 5和7丢失。当然如果已经rebase分支到主分支顶部的,则可以用将快进方法将branch-1合并到主分支。
当我们想要反映另一个分支的变化时,我们是使用rebase还是merge呢?这个问题没有统一的概念,按照个人喜好以及具体的工作场景:
如果你工作在公共分支中,你和基友们在同时协同工作,那么就使用merge,因为它以时间顺序保留了所有的commit,所有的变更都很清晰并将新变化最后叠加到最后一次提交的顶部。
如果你在你保持在你特有分支中工作,rebase会保持你的线性历史,然后, 当将你的分支合并的时候,可以保持你的master更加清晰,简练。