ブランチをチェックアウトする場合:
git checkout 760ac7e
たとえばb9ac70b
、b9ac70b
SHA1を知らなくても、最後の既知のヘッドに戻るにはどうすればよいですか。
ブランチをチェックアウトする場合:
git checkout 760ac7e
たとえばb9ac70b
、b9ac70b
SHA1を知らなくても、最後の既知のヘッドに戻るにはどうすればよいですか。
回答:
以前にチェックアウトされたブランチ(例えば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 -
-キラー機能!