programing

Git: '헤드 분리' 상태에서 복귀하는 방법

powerit 2023. 5. 18. 21:29
반응형

Git: '헤드 분리' 상태에서 복귀하는 방법

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

git checkout 760ac7e

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

이전에 체크아웃한 분기를 기억하는 경우(예:master) 간단히 할 수 있습니다.

git checkout master

분리된 HEAD 상태에서 벗어날 수 있습니다.

일반적으로 말하면,git checkout <branchname>당신을 그것에서 벗어나게 해줄 것입니다.

마지막 지점 이름이 기억나지 않는 경우

git checkout -

마지막으로 체크아웃한 분기도 체크아웃하려고 합니다.

사용하다git reflog이전에 체크아웃한 커밋의 해시를 찾습니다.

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

당신은 다음에서 몇 가지 새로운 커밋을 했을 수 있습니다.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 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'.

일반적으로:git checkout <branch*>(git checkout master특수한 경우).

*우리는 (원래) 커밋(사용)을 분리했습니다.git checkout <commit_hash>)

혹시 나랑 같은 엣지 케이스를 가진 사람이 있을까봐: 나는 라는 지점을 가지고 있습니다.test그리고라는 지점을 만들려고 했습니다.test/my-experimental-feature그것은 내가 이미 존재하는 지점을 가리키는 것이라고 생각했기 때문에 혼란스러웠습니다.로 변경했습니다.test--my-experimental-feature그리고 잘 작동했습니다.

git switch master"마스터" 분기로 전환합니다.
git switch -이전 분기로 다시 전환합니다.

GitHub는 더 이상 마스터를 새 리포지토리의 기본 분기로 사용하지 않기 때문입니다. git checkout master나한텐 안 통했어요

효과가 있었던 것은 다음과 같습니다.
git checkout main

언급URL : https://stackoverflow.com/questions/11801071/git-how-to-return-from-detached-head-state

반응형