git分支

分支管理

  • 创建一个分支

    git branch develop
    
  • 切换到一个分支

    git checkout develop
    
  • 创建并切换到一个新的分支

    git checkout -b new_branch
    
  • 查看分支,其中不带参数显示本地分支,-a所有的分支,-r远程分支, -v显示分支和分支的最后一次 commit, 列出的分支中,带 ***** 的为当前的分支,要从该清单中筛选出你已经(或尚未)与 当前分支合并的分支,可以用 --merged 和 --no-merged 选项

    git branch
    git branch -a
    git branch -r
    git branch -v
    git branch --merged
    git branch --no-merged
    
  • git删除分支,不能删除当前的分支,必须先切换到另外的一个分支上才行

    git branch -d new_branch
    
  • 分支重命名

    git branch -m <旧分支名> <新分支名>
    

git merge

  • git merge将分支合并,下面命令将develop分支合并到当前分支上

    git merge develop
    
  • Merge好在它是一个安全的操作。现有的分支不会被更改,避免了rebase潜在的缺点。 另一方面,这同样意味着每次合并上游更改时feature分支都会引入一个外来的合并提交。 如果master非常活跃的话,这或多或少会污染你的分支历史。虽然高级的git log 选项可以减轻 这个问题,但对于开发者来说,还是会增加理解项目历史的难度。

  • gitmerge

冲突解决

  • 可以通过git diff 和git status找到冲突的地方

  • Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

  • 可以能过下面命令,查看分支的合并图

    git log --graph
    

分支管理

  • 合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支 信息,如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支 历史上就可以看出分支信息

    git merge --no-ff -m "merge with no-ff" dev
    
  • 分支管理策略 在实际开发中,我们应该按照几个基本原则进行分支管理: 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活; 其次,干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时, 再把dev分支合并到master上,在master分支发布1.0版本; 最后,每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

bug分支

  • 修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除

  • 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,可以 用 git stash list 查看statsh历史,然后一种用 git stash apply 恢复,但是恢复 后,stash内容并不删除,你需要用 git stash drop 来删除,另一种方式是用 git stash pop, 恢复的同时把stash内容也删了

    git checkout dev
    ...工作中
    git stash
    git checkout master
    git checkout -b issue_01
    ...解决问题
    git branch -d issue_01
    git checkout dev
    git stash pop
    ...继续工作
    

feature分支

  • 开发一个新feature,最好新建一个分支

  • 一个分支如果合并过,可以删除,如果要丢弃一个没有被合并过的分支,可以 通过git branch -D

    git branch -d branch_name
    git branch -D branch_name
    

多人协作模式

  • 多人协作模式

    • 首先,可以试图用git push origin branch-name推送自己的修改;
    • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    • 如果合并有冲突,则解决冲突,并在本地提交;
    • 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
    • 如果git pull提示"no tracking information",则说明本地分支和远程分支的链接关系 没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
    • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name, 本地和远程分支的名称最好一致;

你可能感兴趣的:(git分支)