Git学习--分支(branch、merge、rebase)
分支:
你可以把他理解为指针,假设一开始master和test分别是origin下的两个分支,都指向file这个文件夹,随后A,B分别使用master和test对file进行更新,他们更新的版本我们记作fileA1,flieA2,…和fileB1,fileB2…,即指针master和test分别指向fileA1,flieA2,…和fileB1,fileB2…,他们同时对源文件file进行更改,每次更改后会存在新的内存块中(即内存地址不同),所以A,B两人的操作使用不同的分支,且互不影响
创建一个分支
git branch +分支名
查看所有分支
git branch list
分支前的 * 字符:它表示当前所在的分支
更换别的分支
git checkout +分支名
也可以用快捷方式:
git branch -b +分支名
相当于执行了创建一个分支和 更换别的分支
删除一个分支
git branch -d +分支名
注意,当前所在的分支不能被删除
合并一个分支
git merge +被合并的分支名
!!这里放入的必须是被合并的分支
合并时容易发生冲突:
- A更新了不同版本的file到远程仓库,B提交时发生冲突不能提交
这时候的解决方法是:
git pull --rebase origin master - A和B更新了同一个文件下的代码(且相距很近,一般来说相距元的不会报错),那么就需要后提交的人手动更改合并后的代码在提交
查看各个分支最后一个提交对象的信息
git branch -v:
可以从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用 --merge ( --no-merged) 选项
推送到远程分支
git push -u origin 分支名
跟踪远程分支
git checkout --track origin/分支名
重命名远程分支
git checkout -b newname origin/分支名
删除远程分支
git push origin 空格:分支名
例如:git pish origin :testing
合并分支
merge和rebase
merge示意图:
开发进程分叉到两个不同分支C3、C4,又各自提交了更新。两个分支最新的快照(C3 和 C4)以及二者最新的共同祖先(C2)进行三方合并,合并的结果是产生一个新的提交对象(C5)
rebase
把在 C3 里产生的变化补丁在 C4 的基础上重新打一遍。在 Git 里,这种操作叫做衍合(rebase)。有了 rebase 命令,就可以把在一个分支里提交的改变移到另一个分支里重放一遍
git rebase master
注意:这里后面跟着的是合并后要添加到的分支,刚好与merge相反
更多推荐
所有评论(0)