Gitの動作を理解するために、Gitのコマンドを実際に試して、結果を見てみました。
1つの記事内で一連のGitコマンドが完結しているので、これら一連のコマンドを順に実行させて結果を見ることで、一連のGitの動作を実際に体感でき、一通り独習することが可能です。
※前回記事のリポジトリ状態からの続きになっています。
前回記事へ | 目次へ:Git関連記事のまとめページ | 次回記事へ |
---|
実行例
git push コマンドの使い方と、主要オプションまとめ
https://www-creators.com/archives/1472
↓
引用:
ブランチを指定して git push する方法
ローカルブランチ「master」を、リモートブランチ「master」に push
git push origin master:master
git push の取り消し方法
https://www-creators.com/archives/2020
↓
引用:
ローカルの変更内容はそのままで、 push 操作だけを取り消す(=リモートからだけ削除)
リモートの master 参照を強制に戻す $ git push -f origin 8dj2dg:master
-----
(※試行用にlocal-repo3を作成)
cd /test-space
mkdir local-repo3
cd /test-space/local-repo3
git init
git remote add origin "D:/test-space/remote-repo1.git"
git log
↓
結果:
fatal: your current branch 'master' does not have any commits yet
-----
(※チェックアウトせずにカレントブランチ以外のブランチを更新)
(※まずmasterブランチをチェックアウト)
git pull origin master
git checkout master
git log --oneline --graph --all
↓
結果:
* fab68d8 (HEAD -> master, origin/master) message R3
* c69a305 message R1
* 94996a0 message4
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1
※チェックアウトせずにカレントブランチ以外のブランチを更新
git fetch origin branch-R1
git log --oneline --graph --all
↓
結果:
* fab68d8 (HEAD -> master, origin/master) message R3
* c69a305 message R1
* 94996a0 message4
| * e009b2d (origin/branch-R1) message R2
|/
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1
(※masterブランチに居ながら、branch-R1ブランチの情報をリモートリポジトリから取得・更新されている)
-----
※チェックアウトせずにカレントブランチ以外のブランチの過去履歴を短縮
git fetch --depth=2 origin branch-R1
git log --oneline --graph --all
↓
結果:
* fab68d8 (HEAD -> master, origin/master) message R3
* c69a305 message R1
* 94996a0 message4
| * e009b2d (origin/branch-R1) message R2
|/
* 20bbab7 (grafted) message3
(※元に戻す)
git fetch --depth=100 origin branch-R1
-----
(※チェックアウトせずにカレントブランチ以外のブランチをマージさせる(Fast-Forwardマージ限定))
(※まずmasterブランチをチェックアウトした状態の確認)
git checkout master
↓
結果:
Already on 'master'
(※Fast-Forwardマージ用に、ブランチを過去のコミット位置に新規作成)
git branch -f branch-R2 00cad71
(※マージ先となるブランチを作成)
git branch -f branch-R1 origin/branch-R1
git log --oneline --graph --all
↓
結果:
* fab68d8 (HEAD -> master, origin/master) message R3
* c69a305 message R1
* 94996a0 message4
| * e009b2d (origin/branch-R1, branch-R1) message R2
|/
* 20bbab7 message3
* 00cad71 (branch-R2) message2
* 4ace194 message1
※チェックアウトせずにカレントブランチ以外のブランチをマージさせる(Fast-Forwardマージ限定)
※git fetch . [先にあるブランチ]:[マージして移動させるブランチ]
※git fetch [リモートリポジトリ名]部分を . にするとローカルを対象として指定
git fetch . branch-R1:branch-R2
↓
結果:
From .
00cad71..e009b2d branch-R1 -> branch-R2
git log --oneline --graph --all
↓
結果:
* fab68d8 (HEAD -> master, origin/master) message R3
* c69a305 message R1
* 94996a0 message4
| * e009b2d (origin/branch-R1, branch-R2, branch-R1) message R2
|/
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1
(※masterをチェックアウトした状態で、branch-R2をbranch-R1へFast-Forwardマージできている)
git branch -v
↓
結果:
branch-R1 e009b2d message R2
branch-R2 e009b2d message R2
* master fab68d8 message R3
-----
(※チェックアウトせずに指定のブランチをリモートリポジトリへpush送信する)
(※まずmasterブランチをチェックアウトした状態の確認)
git checkout master
↓
結果:
Already on 'master'
※チェックアウトせずに指定のブランチをリモートリポジトリへpush送信する
git push origin branch-R2
↓
結果:
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To D:/test-space/remote-repo1.git
* [new branch] branch-R2 -> branch-R2
git log --oneline --graph --all
↓
結果:
* fab68d8 (HEAD -> master, origin/master) message R3
* c69a305 message R1
* 94996a0 message4
| * e009b2d (origin/branch-R2, origin/branch-R1, branch-R2, branch-R1) message R2
|/
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1
cd /test-space/remote-repo1.git
git log --oneline --graph --all
↓
結果:
* fab68d8 (HEAD -> master) message R3
* c69a305 message R1
* 94996a0 message4
| * e009b2d (branch-R2, branch-R1) message R2
|/
* 20bbab7 message3
* 00cad71 message2
* 4ace194 message1
(※masterブランチに居ながら、branch-R2ブランチの情報をリモートリポジトリへpush送信されている)
-----
(※local-repo3を削除)
cd /test-space
rd /s /q "/test-space/local-repo3"
環境
Windows 10、PortableGit-2.40.0-64-bitを使用、全てローカルPC上で実施、GitHub等は不使用。