내 브랜치를 이전 작업 상태(커밋)로 재설정해야 했기 때문에 다음과 같이 했습니다.
git reset --hard c70e611
지금은 이해
HEAD detached at c70e611
nothing to commit, working directory clean
분리된 헤더 메시지를 수정/이해/우회하고 c70e611이 현재 작업 중인 최신 커밋이고 작업 중인 브랜치(마스터 브랜치가 아님)의 HEAD를 나타내도록 푸시하는 방법은 무엇입니까?
답변1
HEAD
커밋 트리에서 작업공간의 현재 위치는 git
브랜치 detached
에 해당하지 않음을 의미합니다. 이 문제를 해결하려면 새 분기를 만들어야 합니다 ( 새 분기에 지정할 이름으로 git checkout -b branch
교체 ).branch
재설정 후 커밋을 삭제하려면 마스터 브랜치를 삭제하고 다시 생성하면 됩니다.
git branch -D master
git checkout -b master
다른 곳에 푸시된 리포지토리를 처리하는 경우 문제를 해결하기 위해 더 많은 작업을 수행해야 하며 푸시를 강제로 수행해야 합니다(다른 사용자에게 작업공간을 다시 복제하도록 지시해야 함). 공유 상태가 있는 경우 실제로 되돌리기 커밋을 만들어야 합니다. 아래 커밋에서 시작하는 모든 커밋 git revert
으로 시작 하고 되돌리기를 참조하세요 .master
c70e611
답변2
HEAD detached at c70e611
를 실행할 때 git reset --hard
그 당시 어떤 브랜치에도 있지 않기 때문입니다. 분리된 헤드가 있고 HEAD
분리된 헤드가 명령으로 이동하면서 git reset --hard
동시에 작업 트리를 해당 상태로 다시 작성합니다.
특정 분기를 foo
로 설정 하려면 c70611
다음을 수행하세요.
git checkout foo
git reset --hard c70611
이것이 업스트림으로 푸시하기에 좋은 상태로 간주된다면 foo
괜찮습니다 git push <remote-name> foo
.
현재 분기인지 확인하지 않고 강제로 foo
실행하는 보다 직접적인 방법이 있습니다 . c70611
즉, foo
이 git update-ref
명령을 사용하여 가리키는 내용을 다시 쓸 수 있습니다.
위의 작업을 수행하기 전에 나는 멈춰서 나도 모르게 어떻게 해리에 빠지고 있는지 확인하려고 노력합니다. 아마도 미완성 리베이스일 수도 있습니다. 첫 번째 단계는 git reflog
기억을 되살리는 데 도움이 되는 마지막 몇 가지 항목을 검토하는 것입니다 .