Gitの動作を理解するために、Gitのコマンドを実際に試して、結果を見てみました。
1つの記事内で一連のGitコマンドが完結しているので、これら一連のコマンドを順に実行させて結果を見ることで、一連のGitの動作を実際に体感でき、一通り独習することが可能です。
※前回記事のリポジトリ状態からの続きになっています。
前回記事へ | 目次へ:Git関連記事のまとめページ | 次回記事へ |
---|
実行例
(※現在のブランチ状況を確認)
git branch -v
↓
結果:
* branch1 2b19eaa Merge branch 'master' into branch1
branch2 f3ef64d message12
master a4d1247 message13 (fixed test10.txt)
※現在のブランチ構造の模式図(+Mはマージ、10C,12Cはチェリーピック)
message1-2-3-4-10-11-12-+M-13 ←master
| ↓ ↑ ↓
+-7-----+M-↑-+M ←branch1
| ↑
+-8-9-10C--12C ←branch2
-----
(※チェックアウトせずに(内容物のファイルを作業フォルダ内に毎回生成させずに)、ブランチを自由に移動させる(自由に任意のコミット位置へ付け替える))
※branch1をチェックアウトの状態で、masterブランチをbranch2の所へ移動させる
git branch -f master branch2
git branch -v
↓
結果:
* branch1 2b19eaa Merge branch 'master' into branch1
branch2 f3ef64d message12
master f3ef64d message12
※branch1をチェックアウトの状態で、masterブランチをmessage1の所へ移動させる
git branch -f master 4ace194
git branch -v
↓
結果:
* branch1 2b19eaa Merge branch 'master' into branch1
branch2 f3ef64d message12
master 4ace194 message1
git branch -f branch2 00cad71
git branch -v
↓
結果:
* branch1 2b19eaa Merge branch 'master' into branch1
branch2 00cad71 message2
master 4ace194 message1
-----
(※branch1をチェックアウトの状態では、branchコマンドでbranch1を移動できない)
git branch -f branch1 20bbab7
↓
結果:
fatal: cannot force update the branch 'branch1' checked out at 'D:/test-space/local-repo1'
※代わりに、resetコマンドで移動させる
git reset --hard 20bbab7
↓
結果:
HEAD is now at 20bbab7 message3
git branch -v
↓
結果:
* branch1 20bbab7 message3
branch2 00cad71 message2
master 4ace194 message1
git log --oneline --graph --all
↓
結果:
* 20bbab7 (HEAD -> branch1) message3
* 00cad71 (branch2) message2
* 4ace194 (master) message1
-----
(※ブランチ位置をそれぞれ元に戻す)
git branch -f master a4d1247
git reset --hard 2b19eaa
git branch -f branch2 f3ef64d
git branch -v
↓
結果:
* branch1 2b19eaa Merge branch 'master' into branch1
branch2 f3ef64d message12
master a4d1247 message13 (fixed test10.txt)
git log --oneline --graph --all
↓
結果:
* 2b19eaa (HEAD -> branch1) Merge branch 'master' into branch1
|\
| * a4d1247 (master) message13 (fixed test10.txt)
| * 4791df6 Merge branch 'branch2'
| |\
| | * f3ef64d (branch2) message12
| | * 7fdeb04 message10
| | * b838160 message9
| | * c68ef01 message8
* | | 135f847 Merge branch 'master' into branch1
|\| |
| * | 60b0341 message12
| * | 045a734 message11
| * | d10f934 message10
| |/
* / 2495cae message7
|/
* 94996a0 message4
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1
環境
Windows 10、PortableGit-2.40.0-64-bitを使用、全てローカルPC上で実施、GitHub等は不使用。