1. ホーム
  2. git

git で master が指すコミットを変更するにはどうすればよいですか?

2023-10-22 12:25:37

質問

git では、本当は機能ブランチで作業すべきなのに、master ブランチにコミットしてしまっています。これを変更して、master が元の場所に戻り、master にあったものが新しいブランチにあるようにしたいのです。基本的に、私のコミット履歴は次のようなものです。

A -- B -- C -- D -- E
          |         |
          |       master
     origin/master

で、こんな感じにしたいんです。

        master
          |
A -- B -- C -- D -- E
          |         |
          |       new_branch
     origin/master

マスターポイントの位置を変更するにはどうすればよいですか?

どのように解決するのですか?

  • 未コミットをためる。 git stash
  • 新しいブランチを作成します。 git branch new_branch
  • master を origin/master にリセットします。 git reset --hard origin/master
  • 新しいブランチを再度チェックアウトします。 git checkout new_branch
  • 変更を破棄します。 git stash pop

作業ツリーがクリーンであれば、stash/unstash は必要ありません。作業ツリーに変更がないことを確認するだけで、--hard をリセットしたときに削除されるからです。


別の可能性 (より高速で、スタッシュとリセットを必要としない)。

  • 新しいブランチをチェックアウトします。 git checkout -b new_branch master
  • 新しい」master ブランチを作成し、それを origin/master のコミットに指定します。 git branch -f master origin/master