Git分支操作

知识来源GitHub入门与实践

在进行多并行作业时,我们会用到分支。在并行开发的过程中,往往会同时存在多个最新代码状态。从master分支创建feature-A分支和feature-B分支后,每个分支都有自己最新的代码。master分支是Git默认创建的分支,因此,基本上所有的开发都是基于这个分支为中心的。

不同的分支,可以同时进行完全不同的作业。等该分支的作业完成之后再与master分支合并。

git branch ——显示分支一览表

git branch命令可以将分支名列表显示。同时可以确认当前所在分支。

$ git branch
* master

可以看到master分支左侧有"*",表示这是我们当前所在分支。结果中没有显示其他分支名,表示本地仓库中只存在master一个分支。

git checkout -b ——创建、切换分支

如果想以当前的分支为基础创建新的分支,我们需要用到git checkout -b命令

  • 切换到feature-A分支并进行提交

    执行下面命令看,创建名为feature-A的分支。

    $ git checkout -b feature-A
    Switched to a new branch 'feature-A'
    

    连续执行下面两条命令也可以收到同样的效果

    #创建分支
    $ git branch feature-A 
    #切换分支
    $ git checkout feature-A
    

    创建feature-A分支,并将当前分支切换为feature-A。现在查看分支列表,会显示我们处于feature-A分支下。

    $ git branch
    * feature-A
      master
    

    现在修改代码,执行git add命令并进行提交的话,代码会提交至feature-A分支。想这样不断对一分支进行提交操作,称为“培育分支”。

    现在在README.md文件添加一行。

    # Git教程
    
    
    
    - feature-A
    

    然后提交。

    $ git add README.md
    $ git commit  -m "Add feature-A"
    [feature-A d7818ae] Add feature-A
     1 file changed, 3 insertions(+)
    

    于是,这一行就添加到feature-A分支中了。

  • 切换到master分支

    现在看下master分支有没有受到影响。首先切换至master分支。

    $ git checkout master
    Switched to branch 'master'
    

    然后查看README.md文件,会发现README.md仍然保持之前的状态,并没有添加文字。feature-A分支的更改不会影响到master分支。只要创建多个分支,就可以在互不影响的状态下开发。

  • 切换回上一个分支

    现在,切换回feature-A分支。

    $ git checkout -
    Switched to branch 'feature-A'
    

    像上面这样用"-"(连字符)代替分支名,就可以切换至上一个分支。

  • 特性分支

    Git和Subversion等几种管理版本不同。创建分支时不要连接中央仓库就可以创建分支。因此,当今大部分工作流程中都用到了特性(Topic)分支。

    特性分支顾名思义,是集中实现单一特性(主题),除此之外不进行任何作业的分支。在日常开发中,往往会创建数个特性分支。稳定分支的角色通常由master分支担当。

    之前我们创建了feature-A分支,这一分支主要实现feature-A,除feature-A的实现之外不进行任何作业。即便在开发过程中,发现了BUG,也需要创建新的分支,在新的分支中进行修正。

    基于特定主题的作业在特性分支中进行,主题完成之后再与master分支进行合并。只要保持这样一个开发流程,就能保证master分支可以随时供人查看。

  • 主干分支

    主干分支是刚才我们讲解的特性分支的原点,同时也是合并的终点。通常人们会用master分支作为主干分支。

git merge——合并分支

接下来,我们假设feature-A已经实现完毕了,接下来想要合并到主干分支中,首先切换到master分支。

  $ git checkout master
  Switched to branch 'master'

然后合并feature-A分支。为了在历史记录中明确记录本次分支合并,我们需要创建合并提交。因此,在合并时附加--no-ff参数。

  $ git merge --no-ff feature-A

随后编辑器会启动,用于录用合并提交的信息。

  Merge branch 'feature-A'
  # Please enter a commit message to explain why this merge is necessary,
  # especially if it merges an updated upstream into a topic branch.
  #
  # Lines starting with '#' will be ignored, and an empty message aborts
  # the commit.

默认信息中已经包含了是从feature-A分支合并过来的相关内容。所以不必做任何更改。将编辑器中显示的内容保存,关闭编辑器,然后就会看到下面的结果。

  $ git merge --no-ff feature-A
  Merge made by the 'recursive' strategy.
   README.md | 3 +++
   1 file changed, 3 insertions(+)

这样一来,feature-A分支的内容就合并到master分支中了。

git log --graph——以图表的形式查看分支

用git log --graph命令进行查看的话,能够清晰的看到特性分支(feature-A)提交的内容已经被合并。除此以外,特性分支的创建以及合并也都清楚明了。

$ git log --graph
*   commit 4da435f984bd80b4dfd26df306206118febc0abe (HEAD -> master)
|\  Merge: 75816af d7818ae
| | Author: JiangCheng <zhou19970407@126.com>
| | Date:   Sun Jul 5 23:22:40 2020 +0800
| |
| |     Merge branch 'feature-A'
| |
| * commit d7818ae5a4b53c43473bef14ddd36c863bce23fc (feature-A)
|/  Author: JiangCheng <zhou19970407@126.com>
|   Date:   Sun Jul 5 00:00:28 2020 +0800
|
|       Add feature-A
|
* commit 75816af90c5a4e840330882f23a5e1d347f1b965
| Author: JiangCheng <zhou19970407@126.com>
| Date:   Thu Jul 2 23:20:25 2020 +0800
|
|     Add index
|
* commit 1ba27d6c696f5c1fe66c1b40df7397db9e55f83d
| Author: JiangCheng <zhou19970407@126.com>
| Date:   Wed Jul 1 22:53:10 2020 +0800

git log --graph命令可以用图表的形式输出,提交日志,非常直观。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354