過去の主店のコミットに戻って、そこから別の作業をしたい!そんな時の Git 操作ですわ♪
コマンドまとめ
# コマンドのハッシュを調べる git log --all --decorate --graph --oneline # コミットに移動 git checkout <hash> # ブランチを作りチェックアウト git checkout -b <branch-name> # 指定コミットにブランチを作りチェックアウト git checkout -b <branch-name> <hash>
実際の作業
1. コミットのハッシュと戻りたい地点を確認
$ git log --all --decorate --graph --oneline * 4173e3c (HEAD -> feature3, origin/feature3) 機能AAAをリファクタリング * b5b0343 機能AAAをブラッシュアップ | * 63cbb04 (feature2) 機能BBB関連ファイルを追加したが不要なのだが一応保存する |/ * 5ec9aa6 機能AAAを追加する | * 7f05e03 (feature1) 失敗を一応保存する |/ * ef0d189 (origin/master) バージョン1 * b4bf0eb 初期コミット
- 5ec9aa6 機能AAAを追加する
に戻りたいのです。
2-1. 2 回のコマンドで任意のコミットにブランチを設定
ハッシュ値を指定してそこにチェックアウトします。
そのコミットにブランチを作成し、その作成したブランチへチェックアウトいたします。
チェックアウトを2回行っておりますけれども、2回めのチェックアウトをいたしませんと HEAD が新しいブランチにひも付きませんの。
$ git checkout 5ec9aa6 Note: checking out '5ec9aa6'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at 5ec9aa6... 機能AAAを追加する $ git checkout -b feature3-2 Switched to a new branch 'feature3-2'
2-2. 1 回のコメンドで任意のコミットにブランチを設定
こちらの方が楽ですわね♪
$ git checkout -b feature3-2 5ec9aa6 Switched to a new branch 'feature3-2'
3. 作業後の確認
$ git log --all --decorate --graph --oneline * 4173e3c (origin/feature3, feature3) 機能AAAをリファクタリング * b5b0343 機能AAAをブラッシュアップ | * 63cbb04 (feature2) 機能BBB関連ファイルを追加したが不要なのだが一応保存する |/ * 5ec9aa6 (HEAD -> feature3-2) 機能AAAを追加する | * 7f05e03 (feature1) 失敗を一応保存する |/ * ef0d189 (origin/master) バージョン1 * b4bf0eb 初期コミット
おわりに
次のページが参考になりました!ありがとう存じます!
以上です。