git 的 branch(分支) 命令行 总结

git分支的原理就不讲了,可以看看Git使用手册3 —— Git 分支(上).本文对分支常用的命令进行了增删查改的总结.

增 (新建分支)

  1. 创建一个分支
$ git branch testing
  1. 创建完成后并不会将HEAD指针切换到新分支上,需要checkout操作,然后再提交,就是在新分支上操作了
$ git checkout testing
  1. 上面两步操作合并简写,新建分支,并将本地HEAD切换到新分支上
$ git checkout -b testing

它是下面两条命令的简写:

$ git branch testing
$ git checkout testing
  1. 推送到远端,origin没有什么特殊含义,只是我们远程仓库的名字,通常默认为origin
$ git push origin testing
如果远端上的分支名字不一样,我们可以进行本地到远端的映射
$ git push origin testing:awesomebranch
  1. 追踪一个远端分支,并给你一个用于工作的本地分支,起点位于 origin/serverfix
1. 原始方式
$ git checkout -b serverfix origin/serverfix
2. 快捷方式 --track 推荐使用
$ git checkout --track origin/serverfix
3. 本地分支别名,感觉没什么卵用
$ git checkout -b sf origin/serverfix

删 (删除分支)

  1. 当一个临时分支使用完成后(idea,hotfix,bug01)应该删除这个分支.
$ git branch -d hotfix

error: The branch 'hotfix' is not fully merged.
If you are sure you want to delete it, run 'git branch -D hotfix'.
意思是分支没有合并,但可以使用大写的D强制删除

$ git branch -D hotfix
  1. 删除远端的分支
$ git push origin --delete hotfix
  1. 当前分支彻底回退到某个版本,本地的源码也会变为上一个版本的内容
$ git reset --hard 版本号的sha1

查 (分支状态)

  1. 查看当前所在分支状态的提交历史
$ git log --oneline --decorate
  1. 查看所有的分支提交历史
git log --oneline --decorate --graph --all
  1. 查看所有的分支,分支前的 * 字符:它代表现在检出的那一个分支
$ git branch -v
  1. 查看哪些分支(已经/尚未)合并到当前分支
$ git branch --merged
$ git branch --no-merged
  1. 远程分支列表
$ git ls-remote

改 (提交分支)

合并 merge

  1. 在主线上进行合并操作,选中一个需要合并进来的分支的节点
$ git checkout master
$ git merge hotfix
Updating f42c576..3a0874c
Fast-forward

在合并的时候,你应该注意到了"快进(fast-forward)"这个词。如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做 “快进(fast-forward)”。
简单的说,你主线合并操作节点,是合并进来分支的super指针.那么就将两条分支串联起来.类似于变基

变基

编辑的主要作用是将合并操作的分支,整洁化到原始分支上面.看起来更清爽,但是隐藏了怎么合并的过程.需要查看日志来看看真实的记录.
不要对在你的仓库外有副本的分支执行变基。 也就是说,不要变基公用的(release,develop等)分支,只用来整理自己的提交记录.
如果你已经将提交推送至某个仓库,而其他人也已经从该仓库拉取提交并进行了后续工作,此时,如果你用 git rebase 命令重新整理了提交并再次推送,你的同伴因此将不得不再次将他们手头的工作与你的提交进行整合,如果接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。

  1. 切换到子线,将变化变基到自己的主线上
$ git checkout experiment
$ git rebase bug001
  1. 回到 bug001 ,进行一次快速合并
$ git checkout bug001
$ git merge experiment

推荐阅读更多精彩内容

  • 三大区域: 工作区 → 缓存区 → 本地仓库 一 、 使用 git config 命令进行配置: git ...
    Manchangdx阅读 2,637评论 0 2
  • 学习资料pro git[https://git-scm.com/book/zh/v2]git - 简明指南[htt...
    合肥黑阅读 14,740评论 1 21
  • 01 总是在固定轨道上行进的生活,会让人感觉枯燥乏味,精神能量萎缩憋闷。总想着出去透透气,缓缓神,让身心重新充一次...
    冬梅_001阅读 215评论 0 2
  • 人生的路很长 长到不敢松口气,转身去追天边的霞 人生的路很短 短到来不及开始,寻觅自由多彩的梦 自由,想象中的精灵...
    俗然阅读 327评论 0 3
  • 关于电梯安全,我们多少知道点儿。但是总觉得那是离我们很远的事,当它真真切切发生的时候,你才知道原来感受的和听到...
    Joanne_fa80阅读 271评论 1 2
  • 那天在食堂碰到一个一直关系很好的同事,我们俩都是调到新单位不久,所以聊的共同话题也挺多。我们谈起了一个共同的事,那...
    勇于有梦的春儿阅读 181评论 6 1