1つまたは複数のファイルに対して、GitでTFSの「保留中の変更を元に戻す」と同等の機能を実行するにはどうすればよいですか?
これは基本的に次の手順を実行することを意味します。
(1)を追加せずにディスク上で変更しただけの場合、これを行うためのコマンドの違い(ある場合)を知っておくとよいでしょう。 (2)はadd-commandを実行しましたとボーナスのために、(3)は変更をコミットした場合でもです。
1と2の場合、必要なのは次のとおりです。
git stash -u #same effect as git reset --hard, but can be undone
これは変更を破棄します。 reset
を使用する場合は注意してください。リセットとチェックアウトを使用した、ハード、ソフト、混合オプションのインデックスと順列の操作について読んでください。 progit本はこれを詳細に説明しています: http://progit.org/2011/07/11/reset.html
3の場合
git reset --hard HEAD^
ただし、保留中の変更がある場合に備えて、この前にgit stash -u
を発行することをお勧めします。
これにより、現在のブランチが現在のコミットの親にリセットされます。 「木っぽい」をオンラインで検索します。参照の後に^および〜Nを使用すると、その参照の履歴内の到達可能なポイントをポイントできます。 gitで履歴がどのように追跡されるかを理解するために、「コンピューター科学者のためのGit」は有向非巡回グラフをよく説明しています: http://eagain.net/articles/git-for-computer-scientists/
現在のコミットの状態から個々のファイルを取得するには(つまり、変更を破棄する)、チェックアウトを使用できます
git checkout HEAD -- <a list of files>
上記の最後のリセットコマンドを誤って発行した場合、問題はありません。 Gitは、reflog内でブランチがポイントしていた場所を追跡します。
git reflog
あなたに歴史をリストします。この出力で、それぞれの参照方法を確認できます。
git reset --hard HEAD@{1}
ブランチをリセットして、以前は1つの変更であった場所に戻します。
さらに、無視されたファイルと追跡されていないファイルをワイプしたい場合は、次のようにワイプできます。
git clean -xdf
このコマンドは、ローカルの変更を元に戻し、リポジトリ内の現在のバージョンに復元します。
git reset --hard
次のコマンドを発行して、最後の有効なコミットに戻すことができます。
git reset --hard HEAD
1つのファイルだけを復元したい場合は、代わりにgit checkoutを使用します。
git checkout -- file_name.extension
git checkout HEAD file_name.extension
git checkout [path]
または(リポジトリ全体)git reset --hard HEAD
git reset [path]
に続く git checkout [path]
git reset --hard [commit]
でリポジトリの状態を復元するには[commit]
、これは tree-ish である必要がありますEclipseを使用したGitでのTFS undo
に相当するのは、ファイルを右クリックしてReplace with
-> HEAD Revision
(または任意のバージョン)を選択することです。