Nếu một người sẽ kiểm tra một chi nhánh:
git checkout 760ac7e
từ ví dụ b9ac70b
, làm thế nào người ta có thể quay trở lại cái đầu được biết đến cuối cùng b9ac70b
mà không biết SHA1 của nó?
Nếu một người sẽ kiểm tra một chi nhánh:
git checkout 760ac7e
từ ví dụ b9ac70b
, làm thế nào người ta có thể quay trở lại cái đầu được biết đến cuối cùng b9ac70b
mà không biết SHA1 của nó?
Câu trả lời:
Nếu bạn nhớ chi nhánh nào đã được kiểm tra trước đó (ví dụ master
), bạn có thể chỉ cần
git checkout master
để thoát khỏi trạng thái ĐẦU tách ra .
Nói chung: git checkout <branchname>
sẽ giúp bạn thoát khỏi điều đó.
Nếu bạn không nhớ tên chi nhánh cuối cùng, hãy thử
git checkout -
Điều này cũng cố gắng kiểm tra chi nhánh kiểm tra cuối cùng của bạn.
git checkout -b new_branch_name
bạn có bị mất các cam kết được thực hiện khi ở trạng thái CHÍNH không?
git gc
được chạy, chúng sẽ bị xóa vĩnh viễn. Bạn có thể xem chúng git reflog
miễn là chúng vẫn ở đó.
Tôi đã có trường hợp cạnh này, nơi tôi đã kiểm tra một phiên bản mã trước đó trong đó cấu trúc thư mục tệp của tôi khác nhau:
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'
Trong trường hợp như thế này, bạn có thể cần phải sử dụng - lực lượng (khi bạn biết rằng quay trở lại chi nhánh ban đầu và loại bỏ các thay đổi là điều an toàn để làm).
git checkout master
đã không làm việc:
$ 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
(hoặc git checkout master -f
) đã làm việc:
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'.
Bạn có thể đã thực hiện một số cam kết mới trong detached HEAD
tiểu bang. Tôi tin rằng nếu bạn làm như những câu trả lời khác khuyên:
git checkout master
# or
git checkout -
sau đó bạn có thể mất các cam kết của bạn !! Thay vào đó, bạn có thể muốn làm điều này:
# you are currently in detached HEAD state
git checkout -b commits-from-detached-head
và sau đó hợp nhất commits-from-detached-head
vào bất cứ nhánh nào bạn muốn, vì vậy bạn không mất các cam kết.
git checkout -
- Tính năng sát thủ!