1174

作業ツリーとインデックスのすべてのコミットされていない変更を元に戻し、新しく作成されたファイルとフォルダーも削除する git コマンドはありますか?

4

14 に答える 14

1918

次の 2 つのコマンドを実行できます。

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd
于 2011-04-28T02:37:48.167 に答える
596

現在の作業ディレクトリでのみ変更を元に戻したい場合は、使用します

git checkout -- .

その前に、実際に何のアクションも行わずに、元に戻すファイルを一覧表示して、何が起こるかを確認することができます。

git checkout --
于 2013-06-21T04:41:18.557 に答える
124

「git checkout -- ...」を使用して、作業ディレクトリの変更を破棄します

git checkout -- app/views/posts/index.html.erb

また

git checkout -- *

gitステータスでステージングされていないファイルに加えられたすべての変更を削除します。

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb
于 2013-03-13T01:16:12.930 に答える
63

重要な方法の 1 つは、次の 2 つのコマンドを実行することです。

  1. git stash これにより、変更がスタッシュに移動され、HEAD の状態に戻ります。
  2. git stash drop これにより、最後のコマンドで作成された最新の stash が削除されます。
于 2013-07-18T09:20:08.270 に答える
24
git clean -fd

役に立たなかった、新しいファイルが残った。私がしたことは、すべての作業ツリーを完全に削除してから

git reset --hard

クリーンアップするオプションを追加するためのアドバイスについては、「gitでローカルの作業ディレクトリをクリアするにはどうすればよいですか? 」を参照してください。-x

git clean -fdx

Note -xフラグは、Gitによって無視されたすべてのファイルを削除するので、注意してください(私が参照している回答の説明を参照してください)。

于 2012-10-15T06:57:27.797 に答える
17

次のコマンドを使用できると思います。git reset --hard

于 2011-04-27T16:10:12.637 に答える
7

まだ消えていないように見えるファイルがあるかもしれないことに注意してください - それらは編集されていないかもしれませんが、CRLF / LF の変更のために git がそれらを編集済みとしてマークした可能性があります。.gitattributes最近変更を加えたかどうかを確認します。

私の場合、.gitattributesファイルに CRLF 設定を追加しましたが、これによりすべてのファイルが「変更されたファイル」リストに残りました。.gitattributes 設定を変更すると、それらが消えました。

于 2016-07-19T10:07:19.223 に答える
4

Git ヘルプから:

 Changes to be committed:
      (use "git restore --staged <file>..." to unstage)

    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
于 2020-08-25T19:11:37.670 に答える
-3

使用する:

git reset HEAD filepath

例えば:

git reset HEAD om211/src/META-INF/persistence.xml
于 2015-02-09T13:18:40.303 に答える