web-dev-qa-db-ja.com

Gitはローカルブランチの削除を元に戻します

git branch -D branchNameで必要な実験的な変更を加えて、間違ったブランチを削除しました。

ブランチを回復するにはどうすればよいですか?

327
Stefan Kendall

git reflog を使用して、ブランチの最後のコミットのSHA1を見つけることができます。その時点から、次を使用してブランチを再作成できます。

git branch branchName <sha1>

編集:@seagullJSが言うように、branch -Dコマンドはsha1を通知するので、端末をまだ閉じていなくても簡単になります。たとえば、これはmaster2という名前のブランチを削除してすぐに復元します。

user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba).    <-- This is the SHA1 we need to restore it!

user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba
629
bobDevil

ブランチの最後のSHA1を知っている場合は、試すことができます

git branch branchName <SHA1>

ソリューション here で説明されているgit reflogを使用してSHA1を見つけることができます。

47
Chetan

削除をまだプッシュしていない場合は、次の操作を実行できます。

$ git checkout deletedBranchName
27
amichaud

ブランチを削除したばかりの場合、ターミナルに次のようなものが表示されます。

Deleted branch branch_name(was e562d13)
  • ここで、e562d13は一意のID(別名「SHA」または「ハッシュ」)です。これにより、削除されたブランチを復元できます。

ブランチを復元するには、次を使用します。

git checkout -b <branch_name> <sha>

git checkout -b branch_name e562d13 
19
Derick

おかげで、これはうまくいきました。

gitブランチnew_branch_name sha1

git checkout new_branch_name

//古いブランチの古いチェックインファイルを見ることができます

3
Rajeev Jayaswal

最初:.gitディレクトリを含むディレクトリ全体をバックアップします。

2番目:git fsck --lost-foundを使用して、失われたコミットのIDを取得できます。

3番目:失われたコミットにリベースまたはマージします。

4番目:-Dまたは--forceをgitで使用する前に、常によく考えてください:)

この良い議論を読んでください この種のエラーから回復する方法も。

編集:ところで、git gcを実行しないでください(または、単独で実行することを許可しない-つまり、git fetchなどを実行しないでください)。

3
Cameron Skinner