2

私は最近、間違ったブランチに対してずさんな大きなコミットを実行しました。私は、コミットされた変更を別のブランチに置き、大きなコミットをいくつかの小さなコミットに分割することにしました。この回答git cherry-pick -nで示されているように実行しました。これにより、現在のブランチに一連の段階的な変更が行われました。これらの変更のいずれも必要ないことはわかっていました。だから私は疑問に思いました: 変更されたファイルをインデックスから削除し、単一のステップで変更を失う方法はありますか? 私が見たほとんどのソリューションでは、 の後に.git resetgit checkout -- path/to/file

4

1 に答える 1

3

私がやったことは、git checkout HEAD -- path/to/file私が理解しているように、最初にインデックスをチェックインするのではなく、ファイルを HEAD コミットのツリーからのものに置き換えることでした。

man ページを参照せずにこの解決策を思いつきましたが、 git-checkout(1)git man ページを指摘してくれた @torek に感謝します。これは私が使用した の 5 番目の形式で、次のようになります。git checkout

git checkout [-p|--patch] [<tree-ish>] [--] <pathspec>...

そのフォームのドキュメントの一部には、次のように記載されています。

The <tree-ish> argument can be used to specify a specific tree-ish (i.e. commit,
tag or tree) to update the index for the given paths before updating the working
tree.

実際に起こったことは次のとおりです。git はインデックス内のファイルを HEAD のバージョンに置き換え (事実上、インデックスからファイルを削除します)、作業ツリー内のファイルをインデックスのバージョンに置き換え、変更を排除しました。

于 2013-07-26T21:44:04.353 に答える