最後のコミット以降のすべての変更を元に戻そうとしています。この投稿を見た後、試しgit reset --hard
てみました。ヘッドが18c3773になっていると応答します...しかし、ローカルソースを見ると、すべてのファイルがまだそこにあります。私は何が欠けていますか?git reset --hard HEAD
15 に答える
これにより、ステージングした可能性のあるすべてのファイルのステージングが解除されます
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
これの一般的な使用法は、ツリーが完全にクリーンであることを確認する必要がある場合のビルドスクリプトです。変更やローカルで作成されたオブジェクトファイルやビルドアーティファクトがなく、非常に高速に動作させ、再作成しないようにする必要があります。リポジトリ全体のクローンを毎回作成します。
コミットされていないすべての変更を「元に戻す」場合は、次のコマンドを実行します。
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
各スタッシュは、前のコミットメッセージにちなんで名付けられています。
私がしていることは
git add . (adding everything)
git stash
git stash drop
一発ギャグ:git add . && git stash && git stash drop
M.ジャスティンが指摘した短いバージョン
git stash -u && git stash drop
またgit stash
、ローカルの変更を「保存」し、後で再適用したり、不要になった場合は削除したりすることもできます。
隠し場所の詳細
以前の回答は変更を完全に削除するため、この回答を追加します
安全な方法
git stash -u
説明:追跡されていない変更(フラグ)を含むローカル変更を隠します。-u
このコマンドは、ローカルの変更を保存し、HEADコミットに一致するように作業ディレクトリを元に戻します。
後で変更を復元したいですか?
git stash pop
説明:コマンドは、変更を現在の作業ツリー状態の最上位に再適用します。
変更を完全に削除したいですか?
git stash drop
説明:コマンドは、隠されたエントリーを完全に削除します
eclipsegit clean -f -d
で作成されたファイルを削除することで元に戻せるかどうかを探してここにたどり着いた人のために、
refの「ローカル履歴からの復元」を使用してUIから同じことを行うことができます:ローカル履歴からの復元
コミットのためにステージングされなかった変更を元に戻す別のオプションは、実行することです。
git restore <file>
作業ディレクトリの変更を破棄します。
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
git restore [filename_path]
たとえば、index.html
ファイル内の最後の変更を破棄する必要があります。
git restore /usr/myPC/folder/index.html
これを使用して、最後のコミット後に不要な変更を削除します。
git reset --hard HEAD
以下は、ローカルの変更を削除するための再利用可能な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
ます。
コミットされていないすべての変更またはローカル変更を「元に戻す」場合は、次のコマンドを実行するだけです。
git add .
git stash
git stash drop
git clean -fdx
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
# Navigate to project root, `.` works too.
git restore *
git status
変更されたファイルがいくつかあることを示しましたが、それらを取り除き、新しいブランチを開始したいと思いました。今日まで、私はgit resetアプローチを使用していました。これは、他の特定のコミットに戻るために好きです。