環境
・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でどんどん上に派生してく感じで書かれている。
今回はここまで。
次はコミットの変更とリモートリポジトリに送信するとこまでやる予定。