1072

最後のコミット以降のすべての変更を元に戻そうとしています。この投稿を見た後、試しgit reset --hardてみました。ヘッドが18c3773になっていると応答します...しかし、ローカルソースを見ると、すべてのファイルがまだそこにあります。私は何が欠けていますか?git reset --hard HEAD

4

15 に答える 15

2094
  • これにより、ステージングした可能性のあるすべてのファイルのステージングが解除されますgit add

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

    git checkout .
    

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

    git checkout [some_dir|file.txt]
    

    コミットされていないすべての変更を元に戻すさらに別の方法(入力に時間がかかりますが、任意のサブディレクトリから機能します):

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

    git clean -fdx
    

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


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

git reset
git checkout .
git clean -fdx

これの一般的な使用法は、ツリーが完全にクリーンであることを確認する必要がある場合のビルドスクリプトです。変更やローカルで作成されたオブジェクトファイルやビルドアーティファクトがなく、非常に高速に動作させ、再作成しないようにする必要があります。リポジトリ全体のクローンを毎回作成します。

于 2012-12-28T21:04:38.177 に答える
180

コミットされていないすべての変更を「元に戻す」場合は、次のコマンドを実行します。

git stash
git stash drop

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

git clean -fdx

git stashstash@{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

各スタッシュは、前のコミットメッセージにちなんで名付けられています。

于 2014-07-18T20:59:59.990 に答える
42

私がしていることは

git add . (adding everything)
git stash 
git stash drop

一発ギャグ:git add . && git stash && git stash drop

M.ジャスティンが指摘した短いバージョン

git stash -u && git stash drop

于 2019-06-09T02:12:22.643 に答える
23

またgit stash、ローカルの変更を「保存」し、後で再適用したり、不要になった場合は削除したりすることもできます。

隠し場所の詳細

于 2012-12-28T21:17:00.437 に答える
18

以前の回答は変更を完全に削除するため、この回答を追加します

安全な方法

git stash -u

説明:追跡されていない変更(フラグ)を含むローカル変更を隠します。-uこのコマンドは、ローカルの変更を保存し、HEADコミットに一致するように作業ディレクトリを元に戻します。

後で変更を復元したいですか?

git stash pop

説明:コマンドは、変更を現在の作業ツリー状態の最上位に再適用します。

変更を完全に削除したいですか?

git stash drop

説明:コマンドは、隠されたエントリーを完全に削除します

gitstashドキュメントへのリンク

于 2020-07-13T18:20:07.877 に答える
12

ソースツリーを使用しています。2つの簡単な手順で、コミットされていないすべての変更を元に戻すことができます。

1)ワークスペースファイルのステータスをリセットする必要があります

ここに画像の説明を入力してください 2)ステージングされていないすべてのファイルを選択し(コマンド+ a)、右クリックして[削除]を選択します

ここに画像の説明を入力してください

とても簡単です:D

于 2016-07-14T17:19:58.760 に答える
8

eclipsegit clean -f -dで作成されたファイルを削除することで元に戻せるかどうかを探してここにたどり着いた人のために、

refの「ローカル履歴からの復元」を使用してUIから同じことを行うことができます:ローカル履歴からの復元

于 2015-08-28T09:31:36.843 に答える
7

コミットのためにステージングされなかった変更を元に戻す別のオプションは、実行することです。

git restore <file>

作業ディレクトリの変更を破棄します。

于 2020-09-06T13:39:38.030 に答える
6

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

何も再ダウンロードせずに、gitcloneと同等

git reset && git checkout . && git clean -fdx
于 2016-07-01T08:54:37.043 に答える
5

git restore [filename_path]

たとえば、index.htmlファイル内の最後の変更を破棄する必要があります。

git restore /usr/myPC/folder/index.html
于 2021-01-31T17:22:16.500 に答える
5

これを使用して、最後のコミット後に不要な変更を削除します。

git reset --hard HEAD
于 2021-03-25T06:00:36.090 に答える
3

以下は、ローカルの変更を削除するための再利用可能なGitコマンドエイリアスを定義します。これは、将来いつでも、コミットされていない変更を削除するために使用できます。

git config --global alias.remove-changes '!git stash push --include-untracked && git stash drop'

エイリアスの使用は簡単です。

git remove-changes

エイリアスは、を使用してすべての変更をスタッシュ(コミットされていないものを含む)にプッシュしgit stash push --include-untracked、次にを使用して新しく作成されたスタッシュエントリをドロップしgit stash dropます。

于 2021-03-11T22:18:39.903 に答える
2

コミットされていないすべての変更またはローカル変更を「元に戻す」場合は、次のコマンドを実行するだけです。

git add . 
git stash 
git stash drop
git clean -fdx
于 2021-05-28T12:24:21.627 に答える
2

Gitには、ローカルの変更を元に戻すのに役立つ3つのオプションがあります。作業ディレクトリで行われた変更を表示するには、gitstatusを実行する必要があります。

gitステータス

git stash を使用して変更を元に戻すすべてのローカル変更を破棄するだけでなく、後で使用するために保存するために、gitstashコマンドを実行できます。

git stash

git checkout を使用して変更を元に戻すファイルへのローカル変更を完全に破棄するには、次のコマンドを実行できます。

gitcheckout-

git reset を使用して変更を元に戻すすべてのファイルに対するすべてのローカル変更を完全に破棄するには、次の操作を実行できます。

git reset --hard

出典:https ://www.w3docs.com/snippets/git/how-to-discard-unstaged-changes.html

于 2021-10-14T18:10:25.353 に答える
1
# Navigate to project root, `.` works too.
git restore *

git status変更されたファイルがいくつかあることを示しましたが、それらを取り除き、新しいブランチを開始したいと思いました。今日まで、私はgit resetアプローチを使用していました。これは、他の特定のコミットに戻るために好きです。

https://www.git-tower.com/learn/git/commands/git-restore/

于 2021-05-14T15:56:19.007 に答える