10

変更を破棄したり、Gitを使用して以前のコミットに戻したりするためのさまざまなアプローチを見てきました。私は通常、どちらが自分の状況に適しているかを理解できますが、その過程で、さまざまなアプローチにかなり混乱しました。最近、いくつかのファイルの名前変更を元に戻そうとしていましたが、古いバージョンのファイルをどれだけ頑張っても、古いファイルを元に戻すgit checkoutことができませんでした。

どのアプローチを使用するのか、そしてその理由についての説明を探しています。これがいくつかのアプローチについての私の理解です。答えは非常に文脈的なものかもしれないと思いますが、どの文脈がどのアプローチを必要とするかを整理してみたいと思います。


1)git checkout -- .

  • 最新バージョンのファイルをチェックアウトするために使用されます。古いファイルは上書きされますが、削除、名前変更、または新しいファイルには影響しません。

2)git stash save --keep-index続いてgit stash drop

  • コミットされていないファイルを隠してから、完全に削除します。保持したい変更をコミットし、破棄したい変更をコミットしていない/ステージングしていない場合は、適切なアプローチです。

3)git reset --hard

  • ファイルの名前変更、削除、追加など、最後のコミット以降のすべてを消去します。

これが私の現在の私の選択肢の理解です。私の説明に何か変更はありますか?git revert上記のコマンドの代わりにいつ使用するかもわかりません。

ソース投稿:

4

1 に答える 1

9
git stash -u

推奨される方法です。落とさないでください。彼らはプッシュされません。あなたが重要であると発見した何かをザップした場合、あなたはそれらを取り戻すことができます。

あなたの他の選択は破壊的です。

Revertは、コミットによって導入されたパッチの反対を適用する新しいコミットを履歴に追加します。ここでの選択は、まだ履歴の一部ではないワークツリーの変更を処理するためのものです。元に戻すは、履歴の一部であるコミットされた変更用です。

于 2012-08-14T19:16:06.950 に答える