カテゴリー
コンピューター

【Git】任意のコミットからブランチを生やして派生させる方法

過去の主店のコミットに戻って、そこから別の作業をしたい!そんな時の 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 初期コミット

おわりに

次のページが参考になりました!ありがとう存じます!

以上です。

コメントを残す