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、merge、rebase)

创建一个分支

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)
Git学习--分支(branch、merge、rebase)

rebase

把在 C3 里产生的变化补丁在 C4 的基础上重新打一遍。在 Git 里,这种操作叫做衍合(rebase)。有了 rebase 命令,就可以把在一个分支里提交的改变移到另一个分支里重放一遍

git rebase master

注意:这里后面跟着的是合并后要添加到的分支,刚好与merge相反