Wenn man eine Filiale auschecken würde:
git checkout 760ac7e
von zB b9ac70b
wie kann man zum letzten bekannten Kopf zurückkehren, b9ac70b
ohne dessen SHA1 zu kennen?
Wenn man eine Filiale auschecken würde:
git checkout 760ac7e
von zB b9ac70b
wie kann man zum letzten bekannten Kopf zurückkehren, b9ac70b
ohne dessen SHA1 zu kennen?
Antworten:
Wenn Sie sich erinnern, welcher Zweig zuvor ausgecheckt wurde (z. B. master
), können Sie dies einfach tun
git checkout master
aus dem losgelösten HEAD- Zustand herauskommen .
Generell: git checkout <branchname>
bringt Sie da raus.
Wenn Sie sich nicht an den Namen des letzten Zweigs erinnern, versuchen Sie es
git checkout -
Dadurch wird auch versucht, Ihren zuletzt ausgecheckten Zweig auszuchecken.
git checkout -b new_branch_name
, verlieren Sie die im getrennten HEAD-Status vorgenommenen Commits?
git gc
sie ausgeführt werden, werden sie für immer entfernt. Sie können sie beobachten, git reflog
solange sie noch da sind.
Ich hatte diesen Randfall, in dem ich eine frühere Version des Codes ausgecheckt habe, in der meine Dateiverzeichnisstruktur anders war:
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'
In einem solchen Fall müssen Sie möglicherweise --force verwenden (wenn Sie wissen, dass es sicher ist, zum ursprünglichen Zweig zurückzukehren und Änderungen zu verwerfen).
git checkout master
funktioniert nicht:
$ 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
(oder git checkout master -f
) gearbeitet:
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'.
Möglicherweise haben Sie im detached HEAD
Bundesstaat einige neue Verpflichtungen eingegangen. Ich glaube, wenn Sie andere Antworten empfehlen:
git checkout master
# or
git checkout -
dann können Sie Ihre Commits verlieren !! Stattdessen möchten Sie möglicherweise Folgendes tun:
# you are currently in detached HEAD state
git checkout -b commits-from-detached-head
und dann commits-from-detached-head
in einen beliebigen Zweig einbinden, damit Sie die Commits nicht verlieren.
git checkout -
- Killer-Feature!