저는 Git을 처음 접했고 SourceTree의 이전 커밋으로 되돌리려했습니다. 내가 저지른 커밋을 마우스 오른쪽 버튼으로 클릭 한 다음 체크 아웃을 클릭했습니다. 그것은 나에게 작업 사본이 분리 된 머리가 될 것이라는 말을했다. 이것이 의미하는 바는 무엇이며, 이것은 내가 피해야하는 것입니까?SourceTree의 이전 커밋으로 돌아 가기
답변
: What's a "detached HEAD" in Git?
"체크 아웃"은 "자식 체크 아웃"으로
을 어떻게 작동하는지 이해 명령, 당신은 당신이 일을하려는 프로젝트의 어떤 버전 결정 에. Git은 그 리비전의 파일을 작업 카피 폴더에 저장합니다.
일반적으로, 당신은 "자식 체크 아웃"그러나
$ git checkout development
와 통신하기 위해 분기 이름을 사용, 당신은 대신 투입 을 특정의 SHA1 해시를 제공 할 수
$ git checkout 56a4e5c08 Note: checking out '56a4e5c08'. You are in 'detached HEAD' state...
이를 정확한 상태 - 특정 커밋이 분기 대신 체크 아웃 된 경우 헤드가 분리 된입니다.
분리 된 HEAD
망할 놈의 머리 포인터가 현재 작업 버전 (그리고 프로젝트의 작업 디렉토리에 있습니다 하여 파일을) 결정의 문제. 일반적으로 올바른 브랜치 이름을 체크 아웃 할 때, 은 새로운 커밋을 생성 할 때 자동으로 HEAD 포인터를 이동시킵니다. 선택한 지점의 최신 커밋이 자동으로 수행됩니다.
대신 커밋 해시를 체크 아웃 할 때 힘내라는 을 대신하지 않습니다. 그 결과 변경 사항을 적용하여 을 커밋하면 이러한 변경 사항이 어떤 지점에도 속하지 않습니다. 즉, 은 다른 개정이나 분기를 체크 아웃하면 손쉽게 얻을 수 있습니다. 즉, 은 분기 컨텍스트에 기록되어 있지 않으므로 의 상태에 쉽게 액세스 할 수 있습니다 (단, 화려한 메모리가없는 한 기억할 수 없음). 새 커밋의 커밋 해시 ...).
요약 : SourceTree에서 , 대신 커밋 특히에 체크 아웃의 특정 지점에 친절하게 체크 아웃.
문제는 git과 정확히 관련이없는 것 같지만 사용중인 클라이언트/공급자 (bitbucket이 의심 스러울 때)와 관련이 있습니다.
웹 UI 대신 커맨드 라인 클라이언트를 사용하는 것이 좋습니다.
분리 헤드 상태에서 변경 사항 (및 커밋)이 커밋 트리에서 분리되면 커밋 트리로 다시 커밋하기 위해 추가 작업이 필요합니다. 보통 우리는 분리 된 헤드 상태를 변경하지 않고, 커밋 트리를 재 배열하는 데 사용됩니다. 그러나 분리 된 상태에서 실험 해 볼 가치가 있습니다.
당 힘내 타워의 기사로
가능한 소스 트리를 사용하여 이전 커밋으로 되돌릴 수있는 복제본 (http://stackoverflow.com/questions/28253914/how-do-i-revert-back-to-earlier-commit-using- source-tree) –
당신은이 커밋을 되돌릴 수 있지만, 일반적으로 더 안전한 조치는 되돌리기 커밋을 만들어이 커밋을 취소하는 것입니다. –