回答:
git reset --hardは、最後のコミット以降すべてを破棄したい場合に役立ちます
git reset --hard HEAD^
本当に受け入れられる答えでなければなりません。OPは他のブランチについて質問していませんでした...
git diff master > branch.diff
git apply --reverse branch.diff
git rm [branch name].diff
変更を望まずdesign
、リモートのブランチと完全に一致させたい場合は、ブランチを削除して再作成することもできます。
# Switch to some branch other than design
$ git br -D design
$ git co -b design origin/design # Will set up design to track origin's design branch
@ Will、git immersionは本当に素晴らしくシンプルなgitチュートリアルです。ステージングされていない、ステージングされている、コミットされている場合の変更を元に戻す方法を示します。ラボ14-18
Ruby
インストールする必要があります。これは常に選択できるとは限りません
ローカルブランチの変更を破棄する場合は、git stashコマンドを使用してこれらの変更を隠しておくことができます。
git stash save "some_name"
変更は保存され、必要に応じて後で取得したり、削除したりできます。これを実行すると、ブランチにはコミットされていないコードがなくなり、git pullを使用してメインブランチから最新のコードをプルできます。
ソースルート:
git reset ./ HEAD <--un-stage any staged changes
git checkout ./ <--discard any unstaged changes
マージを行った後、すぐにチェックアウトの開発を忘れた後、この質問を見つけました。あなたはそれを推測しました:私は直接masterでいくつかのファイルを変更し始めました。ドー!私の状況はほとんど一意ではないので(私たち全員がそうしましたね;->)、すべての変更を破棄して、マスターが再び開発しているように見せるために使用した可逆的な方法を提供します。
やった後にgit diff
ファイルが変更されたものを見ると、私の誤差の範囲を評価するために、私が実行しました:
git stash
git stash clear
すべての変更を最初に隠した後、それらは次にクリアされました。マスターへのエラーのあるファイルに加えられたすべての変更が失われ、パリティが復元されました。
これらの変更を復元したいとします。私がすることができます。最初のステップは、私がクリア/ドロップしたスタッシュのハッシュを見つけることです:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
ハッシュを学習した後、私はコミットされていない変更を正常に復元しました:
git stash apply hash-of-cleared-stash
これらの変更を本当に復元したくなかったので、元に戻せることを確認したかったので、もう一度クリアしました。
別のオプションは、変更を消去するのではなく、スタッシュを別のブランチに適用することです。したがって、間違ったブランチでの作業から加えられた変更をクリアするという点でstash
は、ブーブーから回復するための多くの柔軟性が得られます。
とにかく、ブランチへの変更をクリアするリバーシブルな手段が必要な場合、前述の方法はこのユースケースではそれほど危険ではありません。
git reset --hard HEAD^