web-dev-qa-db-ja.com

未コミットまたは未保存の変更をすべて元に戻す

前回のコミット以降のすべての変更を元に戻そうとしています。 この記事 を見てからgit reset --hardgit reset --hard HEADを試してみました。私はhead with 18c3773で応答します...しかし、私が自分のローカルソースを見ると、すべてのファイルはまだそこにあります。何が足りないの?

680
Antarr Byrd
  • これにより、git addでステージングした可能性のあるすべてのファイルがアンステージされます。

    git reset
    
  • これにより、コミットされていないローカルの変更がすべて元に戻されます(リポジトリルートで実行する必要があります)。

    git checkout .
    

    コミットされていない変更を特定のファイルまたはディレクトリにのみ戻すこともできます。

    git checkout [some_dir|file.txt]
    

    コミットされていないすべての変更を元に戻すもう1つの方法(入力は長くなりますが、任意のサブディレクトリから機能します)。

    git reset --hard HEAD
    
  • これにより、すべてのローカルの未追跡ファイルが削除されるため、 only git追跡ファイルが残ります。

    git clean -fdx
    

    警告: -xは、.gitignoreで指定されたファイルも含めて、無視されたファイルもすべて削除します。削除するファイルのプレビューには-nを使用することをお勧めします。


要約すると、以下のコマンドを実行することは、元のソースからの新しいgit cloneと基本的に同じです(ただし、何も再ダウンロードされないため、はるかに高速です)。

git reset
git checkout .
git clean -fdx

これに対する典型的な使用法は、あなたのツリーが完全にクリーンであることを確認しなければならないときにビルドスクリプトで行われるでしょう。リポジトリ全体を一度にクローンします。

1330
mvp

コミットしていない変更をすべて " undo "にしたい場合は、単に実行してください。

git stash
git stash drop

追跡されていないファイルがある場合(git statusを実行して確認)、これらのファイルを実行して削除することができます。

git clean -fdx

git stashは、 stash @ {0} になる新しいstashを作成します。最初に確認したい場合は、git stash listを実行して自分の隠し場所のリストを確認できます。それは次のようになります。

stash@{0}: WIP on Rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes

それぞれの隠し場所は、前のコミットメッセージにちなんで命名されます。

125
Abram

git stashもあります - これはあなたのローカルな変更を「隠しておく」ことができ、後で再適用することも、必要でなくなった場合は削除することもできます。

詳細 隠蔽に関する情報

17
keshav

私はソースツリーを使っています....コミットされていないすべての変更を2つの簡単なステップで元に戻すことができます。

1)ワークスペースファイルのステータスをリセットするだけです

enter image description here 2)すべてのステージングされていないファイルを選択し(command + a)、右クリックして[削除]を選択します

enter image description here

それはそれほど簡単です:D

11
user1872384

Eclipse に作成されたファイルが削除されたため、git clean -f -dを元に戻すことができるかどうか検索して、ここに到達した人のために、

あなたは参照のために "ローカル履歴から復元"を使ってUIから同じことをすることができます: ローカル履歴から復元

5
Abdul Rahman K

1つのコミットから新しいコミットへ移行する国

0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed

状態遷移のためのアクション

0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"

差分をチェック

0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD

最後のコミットに戻る

2->1: git reset
1->0: git checkout .     #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx     #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD

何も再ダウンロードしないでgitクローンと同等

git reset; git checkout .; git clean -fdx
2
Zii

私がしているのは

git add。 (すべて追加)

git stash

git stash drop。

1つのライナー: 'git add。 && git stash && git stash drop '

1
Ralph