git 之 新建分支、删除分支、合并分支、同步分支、分支冲突

新建分支:

git branch                                           #查看本地所有分支

git checkout -b <branch name>        #新建分支

删除分支:

1. 删除本地分支:

git branch                                  #查看本地所有分支

git branch -d <branch name>  #删除本地分支

2. 删除远程分支:
git branch -a                                            #查看本地和远程所有分支

git branch -r -d origin/<branch name>  #删除远程分支

如果在gitlab网站上还有这个分支,需要在branches中手动删除

说明:

origin:在clone完成之后,Git会自动将此远程仓库命名为origin,并下载其中所有的数据,建立一个指向它的master分支的指针,用(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个remote branch clone数据到本地)。origin只相当于一个别名,运行git remote –v或者查看.git/config可以看到origin的含义。

HEAD:是指指针,指向当前分支的位置。

Fast forward:如果顺着一个分支走下去可以到达另一个分支的话,Git在合并两者时,只会简单地把指针右移,因为这种单线的历史分支不存在任何需要解决的分歧,所以这种合并过程可以称为快进(Fast forward)。

git remote -v          #查看各个分支最后一个提交对象的信息

git log --oneline    #查看git上目前的分支情况

git fetch 更新分支:

git fetch <remote name> #更新指定remote底下的分支,会读取remote repo的内容,并且更新remote branch的内容
git fetch --all(等同于git remote update) #更新所有remote底下的分支

git pull 同步分支:

git checkout <branch name>   #切换到<branch name>分支
git pull <branch name> <remote name>
git push

git checkout <branch name>
git pull --rebase <branch name> <remote name>
git push

git merge 合并分支:

git checkout <branch name>
git merge <merged branch name> #合并分支
git show --pretty=raw


git checkout <branch name>
git merge --no-ff <merged branch name> #强制产生merge patch

git show --pretty=raw

git branch --merged          #查看哪些分支已被并入当前分支,也就是说哪些分支是当前分支的直接上游。

                                            (列表中没有 * 的分支通常都可以用 git branch -d 来删掉)

git branch --no-merged    #查看尚未合并的工作

git merge --abort              #抛弃合并过程并且尝试重建合并前的状态

遇到冲突时的分支合并:

首先试图使用git merge

会报错,然后用git status查看是哪个文件发生了冲突

然后用vim打开git status中提示出现冲突的文件,并手动解决冲突

git merge <branch name>
git status
vim xx.xx
git status
git add
git commit -m ""
git push origin <branch name>
总结:

尽量少用merge,除非两个branch的差异过大,主要原因是需要尽量确保分支的简单性,且每个patch容易拆解或重组。

MergeRebase
容易理解不容易理解
会产生 Merge Patch,保存原始的 commit id重新 cherry-pick,重新产生 commit id
当发生 conflict 的時候,全部在 Merge Patch 一次解完Rebase 的过程中,每次 cherry-pick 都可能会发生 conflict
commit tree 会有两个 parents,不容易 trace codecommit 路徑單純,容易 trace code,或回到指定版本
git log 无法呈现合并前分支順序性git log 可以呈現正確的提交順序
过多的 Merge Patch 会看起来很乱分支乾淨一致

git分支命名规范

具体参见: git分支规范

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值