ブランチをチェックアウトする場合:
git checkout 760ac7e
たとえばb9ac70b、b9ac70bSHA1を知らなくても、最後の既知のヘッドに戻るにはどうすればよいですか。
ブランチをチェックアウトする場合:
git checkout 760ac7e
たとえばb9ac70b、b9ac70bSHA1を知らなくても、最後の既知のヘッドに戻るにはどうすればよいですか。
回答:
以前にチェックアウトされたブランチ(例えばmaster)を覚えている場合は、簡単にできます。
git checkout master
デタッチされたHEAD状態から抜け出します。
一般的に言えば、git checkout <branchname>それからあなたを救います。
最後のブランチ名を覚えていない場合は、
git checkout -
また、最後にチェックアウトしたブランチをチェックアウトしようとします。
git checkout -b new_branch_nameデタッチされたHEAD状態の間に行われたコミットが失われますか?
git gcますが、実行されると永久に削除されます。git reflogそこにいる限り、一緒に見ることができます。
私はこのエッジケースを持っていて、私のファイルディレクトリ構造が異なる以前のバージョンのコードをチェックアウトしました:
git checkout 1.87.1
warning: unable to unlink web/sites/default/default.settings.php: Permission denied
... other warnings ...
Note: checking out '1.87.1'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again.
Example:
git checkout -b <new-branch-name>
HEAD is now at 50a7153d7... Merge branch 'hotfix/1.87.1'
このような場合は、-forceを使用する必要がある場合があります(元のブランチに戻って変更を破棄することが安全であることがわかっている場合)。
git checkout master 動作しませんでした:
$ git checkout master
error: The following untracked working tree files would be overwritten by checkout:
web/sites/default/default.settings.php
... other files ...
git checkout master --force(またはgit checkout master -f)働いた:
git checkout master -f
Previous HEAD position was 50a7153d7... Merge branch 'hotfix/1.87.1'
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
detached HEAD州でいくつかの新しいコミットを行った可能性があります。他の答えが助言するようにあなたがそうするなら私は信じます:
git checkout master
# or
git checkout -
その後、コミットを失う可能性があります!! 代わりに、これを行うことができます。
# you are currently in detached HEAD state
git checkout -b commits-from-detached-head
commits-from-detached-head必要なブランチにマージして、コミットを失わないようにします。
git checkout --キラー機能!