2

最近の 2 つの変更セットを見ています。

$ git log --oneline
123798 most recent stuff
349873 earlier changes
...

現在、私は「最新のもの」チェンジセットにいます。私がやりたいことは、HEAD ポインターをこの変更セットにとどめ、ファイルを「以前の変更」にあったかのように見せることです。HEADgit reset --softポインターは移動しますが、ファイルは変更されません。

編集

私が見つけた作品は、やることです

$ git checkout 349873
$ git reset --soft 123798
$ git reset HEAD

これは私が何をしたいのかを説明しています。しかし、これを行うためのより簡潔な方法があるかどうか疑問に思っていますか?

4

2 に答える 2

2
git update-ref HEAD <desired-SHA>

これは作業コピーには影響しません。

于 2012-04-27T16:58:16.627 に答える
1

これを行うためのより短い方法はわかりませんが、次のとおりです。

if current=$(git symbolic-ref HEAD); then
    git checkout $@
    git symbolic-ref HEAD $current
fi

シェルスクリプトとしてトリックを行います。(これは確かに珍しいことです...) チェックアウト コマンドから通常の「HEAD が切り離されました」というメッセージが表示され、その後、開始したブランチに戻ろうとすると、既にブランチにいるというエラーが表示されます。あなたがそうでなくても、それは。

(上記は、あなたがいくつかのブランチの先端にいて、そこにとどまりたいと思っていることを前提としています。すでにdetached HEAD状態にある場合は、シンボリック参照がないことを訴えます。rev=$(git rev-parse HEAD)代わりに使用して、rev HEAD が何であるかを見つけ、次に使用git update-ref HEAD $revして元に戻ります。そこの。)

于 2012-04-27T19:45:04.290 に答える