LoginSignup
1
0

More than 5 years have passed since last update.

Gitでブランチ操作とマージして、graphで確認してみた。

Posted at

環境

・Git version 2.20.1.windows.1

今日の目標

ブランチ操作とマージについて操作を覚える。

目次

1.ブランチの一覧を表示する。
2.新しいブランチを作成し、作業するブランチを切り替える。
3.ブランチのマージ
4.ツリー風なCUIでブランチを確認する。

1.ブランチの一覧を表示する。

masterブランチの左側にある*が現在のブランチを表すらしい。

$ git branch
* master

2.新しいブランチを作成し、作業するブランチを切り替える。

新しいブランチSampleAを作成する。

$ git checkout -b SampleA
Switched to a new branch 'SampleA'
M       README.md

このコマンドは次のコマンドでも同じ動作が期待できる。

$ git branch SampleB
$ git checkout SampleB

ブランチSampleBが作成され、チェックアウトされたことがわかる。

$ git branch
  SampleA
* SampleB
  master

この状態でREADME.mdに1行追加してステージングしてからコミットしてみる。
(編集は省略)

$ git add README.md
$ git commit -m "add SampleB"
[SampleB f41dde9] add SampleB
 1 file changed, 2 insertions(+)

この状態でmasterにステージがコミットされていないことを確認する。

$ git checkout master
Switched to branch 'master'
A       .README.md.swp

$ git branch
  SampleA
  SampleB
* master

まずはmasterにブランチを切り替える。
この状態でREADME.mdの中身を確認すると、SampleBで追加した内容が存在しないことがわかる。

再び元のSampleBブランチに戻る。
checkoutコマンドの引数に-を付けると1つ前のブランチに戻る。

$ git checkout -
Switched to branch 'SampleB'
A       .README.md.swp

$ git branch
  SampleA
* SampleB
  master

元のSampleBのブランチに移動した。

3.ブランチのマージ

SampleBのブランチをmasterブランチにマージする。
まずmasterブランチをチェックアウトする。

$ git checkout master
Switched to branch 'master'
A       .README.md.swp

現在のブランチを確認する。

$ git branch
  SampleA
  SampleB
* master

masterに切り替わった。

マージコマンドを入力する。
このときに--on-ffオプションを付ける。
これにより、ブランチからマージしたことがロギングされる。

$ git merge --no-ff SampleB
hint: Waiting for your editor to close the file...
[main 2019-02-17T08:12:29.924Z] update#setState idle
[main 2019-02-17T08:12:59.927Z] update#setState checking for updates
[main 2019-02-17T08:13:00.052Z] update#setState idle

テキストエディタが開くので、コミットメッセージを入力する。
デフォルトでブランチ先からのコミットであるメッセージが入力されているため
編集しなくてもOK。

Merge made by the 'recursive' strategy.
 README.md | 2 ++
 1 file changed, 2 insertions(+)

マージされた事をログで確認できる。

4.ツリー風なCUIでブランチを確認する。

$ git log --graph
*   commit 1ea19865678c353a23dac5168f097d82e760fac1 (HEAD -> master)
|\  Merge: 8381fa5 f41dde9
| | Author: 僕の名前 <僕のメルアド>
| | Date:   Sun Feb 17 17:12:26 2019 +0900
| |
| |     Merge branch 'SampleB'
| |
| * commit f41dde96d8ac51edac62f2faaae97914f60eff26 (SampleB)
| | Author: 僕の名前 <僕のメルアド>
| | Date:   Sun Feb 17 00:11:49 2019 +0900
| |
| |     add SampleB
| |
* | commit 8381fa57775415a1b8b39e841e987de678f8bf88
|/  Author: 僕の名前 <僕のメルアド>
|   Date:   Sun Feb 17 17:11:24 2019 +0900
|
|       swp commit
|
* commit 1e18d76875063f058644bbc2083447bc95aae385 (SampleA)
| Author: 僕の名前 <僕のメルアド>
| Date:   Thu Feb 14 21:41:36 2019 +0900
|
|     テストコミット
|
|     テストしたかったから。
|
* commit 1da12c37794122b58c6c099067c27249c38c24c1
  Author: 僕の名前 <僕のメルアド>
  Date:   Thu Feb 14 21:28:47 2019 +0900

      First commit

これ、見やすいか?
俺にはみやすくない。

ちなみに、一番下がFirst commitでどんどん上に派生してく感じで書かれている。

今回はここまで。
次はコミットの変更とリモートリポジトリに送信するとこまでやる予定。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0