힘내 : '분리 된 HEAD'상태에서 돌아 오는 방법


218

지점을 체크 아웃하는 경우 :

git checkout 760ac7e

예를 들어 SHA1을 모른 채 b9ac70b어떻게 마지막으로 알려진 머리로 돌아갈 수 b9ac70b있습니까?

답변:


332

당신이 (예를 들어 이전에 체크 아웃 한 가지 기억한다면 master) 당신은 간단하게 할 수

git checkout master

분리 된 HEAD 상태에서 벗어나기 위해 .

일반적으로 말하면 : git checkout <branchname>당신을 그로부터 벗어날 것입니다.

마지막 지점 이름이 기억 나지 않으면

git checkout -

또한 마지막으로 체크 아웃 한 지점을 체크 아웃하려고합니다.


17
git checkout --킬러 기능!
dimpiax

1
당신이하지 않으면 git checkout -b new_branch_name분리 된 HEAD 상태에있는 커밋을 잃어 버립니까?
jocassid

2
@ jocassid 그렇습니다. 그것들은 잠시 동안 존재하지만 git gc실행되면 영원히 제거됩니다. git reflog그들이 여전히있는 한 그들을 볼 수 있습니다 .
eckes

이렇게하면 분리 된 HEAD에서 수행 한 커밋 / 변경 사항을 잃지 않습니까? 이것이 더 좋은 방법이 아닙니까? stackoverflow.com/a/61489179/13087176
tipsy boopenstein

@tipsyboopenstein이 맞습니다. jocassid는 이미 이것을 언급했습니다 : stackoverflow.com/questions/11801071/…
eckes

16

git reflog이전에 체크 아웃 된 커밋의 해시를 찾는 데 사용 합니다.

마지막 체크 아웃 된 분기로 이동하는 바로 가기 명령 (분리 된 HEAD 및 중간 커밋으로 올바르게 작동하는지 확실하지 않음)은 다음과 같습니다. git checkout -


4

파일 케이스 구조가 다른 이전 버전의 코드를 체크 아웃 한 경우가 있습니다.

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'.

1

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원하는 분기 로 병합 하여 커밋을 잃지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.