Git ブランチ ポインターを別のコミットに移動する
この記事では、Git ブランチ ポインターを別のコミットに移動する方法について説明します。 宛先ブランチでチェックアウトされている場合とチェックアウトされていない場合にポインターを移動する方法を確認します。
より単純なものから始めましょう。
宛先ブランチでチェックアウト中に Git ブランチ ポインタを別のコミットに移動する
以下の例は、リポジトリ内の feature
ブランチを示しています。 コミット履歴はこちら。
4ee91ac
コミットから e65841a
コミット (つまり、HEAD@ {2}
) にブランチ ポインターを移動します。 これについてどうすればよいでしょうか?
宛先である feature
ブランチにチェックアウトされているため、以下に示すように git reset
コマンドを実行できます。
$ git reset --hard e65841a
出力:
HEAD is now at e65841a Update README.md
これにより、参照が指定されたコミットに移動します。 かなり簡単ですよね?
次のシナリオに移りましょう。
宛先ブランチでチェックアウトされていない間に Git ブランチ ポインタを別のコミットに移動する
master
ブランチに切り替えましょう。 master
ブランチでチェックアウトしているときに、feature
ブランチのブランチ ポインタを移動するにはどうすればよいでしょうか?
2つの方法があります。 最も簡単なものから始めます。
git branch
コマンド
このシナリオのコマンドの基本的な構文は次のとおりです。
$ git branch -f <branch-name> <commit-hash>
このシナリオでは、ポインターを afcc8bb
コミットに移動します。 どうすればいいですか?
以下に示すように、feature
ブランチのポインタを git branch
コマンドで移動できます。
$ git branch -f feature afcc8bb
これにより、ポインターが指定されたコミットに移動するはずです。 私たちのケースを確認しましょう。
それはそれと同じくらい簡単です。 他の方法を見てみましょう。
git update-ref
コマンド
以下に示すように、git update-ref
コマンドを使用してブランチ ポインターを移動できます。
$ git update-ref -m "reset: Reset <branch-name> to <sha1-commit-hash>" refs/heads/<branch-name> <sha1-commit-hash>
ポインターをさらに 124bfa9
コミットに移動します。 これが私たちがそれを行う方法です。
まず、master
ブランチに戻りましょう。 次に、以下に示すようにコマンドを実行します。
$ git update-ref -m "reset: Reset feature to 124bfa9" refs/heads/feature 124bfa9
上記のコマンドはポインターを移動し、feature
ブランチの reflog
にメッセージを追加します。 私たちのケースを確認しましょう。
そこにあります。
簡単に言えば、Git では、目的のブランチでチェックアウトされている場合とチェックアウトされていない場合の両方で、ブランチ ポインターを移動できます。 両方のシナリオで異なるコマンドについて説明しました。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn