58

タイトルは以前の質問と似ていますが、私のシンプルなケースの解決策が見つかりませんでした:

  • 私は自分のブランチ「ABCD」にコミットしました:git commit -a .....
  • 次に、以前のコミットにアクセスすることにしました。git checkout 2387687326487
  • ここでは、テスト目的でのみいくつかの変更を加えましたが、それらを保持したくありません
  • 完了しました。最新のコミットに戻りたいです (再び: 古いコミットに加えた変更を無視します): コマンドgit checkout 'ABCD'でエラーが発生します:

次のファイルへのローカルの変更は、チェックアウトによって上書きされます...コミットするか、隠してください...

コミットしたり隠したりしたくない間。家に帰りたいだけです:)どうすればいいですか?

4

5 に答える 5

88

ちょうど使用

git checkout .

現在のディレクトリ内のコミットされていない変更を破棄します (ドットは現在のディレクトリを意味します)。

@GokulNKに応じて編集:

将来の使用のためにこれらの変更を保持する場合は、2 つのオプションがあります。

  • git stash: これにより、これらの変更がスタックに保存されます。後で作業コピーに変更を適用できます。git stash pop
  • git diff > changes.patch: これにより、これらの変更がファイルに保存されますchanges.patch。それらを作業コピーに適用したい場合は、そうすることができます: git apply changes.patch.
于 2012-07-24T09:54:45.470 に答える
47

変更を保持したくないことが確実な場合は、次の行で実行できます。

git checkout -f 'ABCD'

オプション'-f'は力を表します。

于 2012-07-24T09:46:06.083 に答える
18

ローカルの変更を元に戻し、コミットからの状態に戻るには、次のことができます。

git reset --hard
于 2012-07-24T09:50:35.703 に答える
14

上記のソリューションとは別に、変更を隠しておくことができます

git stash

ブランチをチェックアウト

git checkout 'ABCD'

そして最終的に、隠された変更から何も必要ないと確信し、gitkまたはgitgで2回チェックした場合は、隠しを破棄します。

git stash drop

それがより安全なので、それは私の好ましい方法です。

于 2012-07-24T10:00:10.530 に答える