105

プロジェクトに大きな問題があります。これがシナリオです。GITの下にxcodeプロジェクトがあります。今日、最後のコミットでいくつかのテストが失敗したことに気付いたので、前のコミットをチェックしました。SourceTreeを使用しましたが、これは警告です

そうすることで、作業コピーが「切り離されたHEAD」になります。これは、ブランチに参加しなくなることを意味します。この後にコミットする場合は、ブランチを再度チェックアウトするか、新しいブランチを作成することをお勧めします。これでいい?

私は一日中働き、最後にすべてをコミットしました。そのため、開発ブランチでの作業をマージする必要があったので、開発ブランチをチェックアウトすると...私の作業はすぐに消えました:(

HEADを切り離すのが間違っていて、Sourcetreeが警告してくれたのは知っていますが、作業を復元する方法はありますか?

4

7 に答える 7

300

と入力すると、リビジョンが指してgit reflogいる履歴が表示されます。HEADあなたの切り離された頭はそこにあるはずです。見つかったら、git checkout -b my-new-branch abc123or git branch my-new-branch abc123(abc123デタッチされた HEAD の SHA-1 はどこにありますか) を実行して、デタッチされたヘッドを指す新しいブランチを作成します。これで、自由にそのブランチをマージできます。

通常、デタッチされたヘッドで作業した後にブランチをチェックアウトすると、Git は、必要に応じてそれを回復できるように、デタッチされたヘッドからのコミットを通知する必要があります。私は SourceTree を使ったことがないので、それがそのメッセージを中継するかどうかはわかりません。git checkout -bしかし、そのメッセージが表示された場合は、それを使用してコミットを見つけ、再度または使用git branchしてそのコミットからブランチを作成できるはずです。

于 2013-02-07T17:45:12.937 に答える
0

このシナリオを試してみたところ、git が最後のコミットの SHA-1 を教えてくれることがわかりました。

vors@localhost:~/git-test$ git checkout master 
Warning: you are leaving 1 commit behind, not connected to
any of your branches:

  ec600e6 333

If you want to keep them by creating a new branch, this may be a good time
to do so with:

 git branch new_branch_name ec600e6eb2473dd4f3732539c5c1fa5829f631b7

Switched to branch 'master'

このメッセージを見ましたか?

于 2013-02-07T17:47:19.237 に答える
0

あなたがしたい限り、切り離されたヘッドは問題ありません。

コミットを元に戻したい場合は、特定のブランチで git revert を使用できます

切り離された頭から離れてコミットしたい場合。新しいブランチを作成します (後でマージします)。

于 2013-02-07T17:47:51.563 に答える