development

git checkouts는 실제로 무엇을 의미합니까?

big-blog 2020. 9. 22. 20:49
반응형

git checkouts는 실제로 무엇을 의미합니까?


checkoutgit 에는 무엇이 있습니까?

checkout특정 지점에 한 번하면 HEAD해당 지점에 대한 포인트를 알고 있습니다. 그러나 그것은 정말로 무엇을 의미합니까? 그러면 해당 지점에서 작업 할 수 있다는 의미입니까? 그렇다면 지점을 확인하지 않고 작업 할 수 없습니까?

또한 무슨 remote checkout뜻입니까? 어떻게 유용합니까?


언급 HEAD했듯이은 커밋 트리에서 현재 위치를 나타내는 레이블입니다. 한 커밋에서 다른 커밋으로 이동할 때 함께 이동합니다. git checkout <commit>커밋 트리에서 이동하여 포커스 ( HEAD)를 지정된 커밋으로 이동하는 기본 메커니즘입니다 .

는, 해시, 지점명, 태그 이름, 상대 구 (커밋 다수의 방법 중 하나에 의해 지정 될 수 커밋 HEAD^, HEAD~1등, 등)한다. 체크 아웃이 분기를 변경하는 것으로 간주하는 것이 유용한 경우가 많으며 해당 관점에서 작동하는 몇 가지 옵션이 있지만 모두 커밋을 참조합니다.

체크 아웃하려면 커밋에 이동하는 것 외에 다른 영향이 HEAD있습니다.

  • 작업 디렉토리가 체크 아웃 된 커밋 상태로 업데이트됩니다.
  • 분기 이름이 지정된 경우 체크 아웃하면 해당 분기가 활성화됩니다. 활성 분기는 추가 된 새 커밋과 함께 이동합니다.
    • -b옵션 새로운 지점은 현재 커밋을 기반으로 생성 한 후 활성화 될 것이다.
    • --track옵션을 체크 아웃 분기 원격 지점을 인식 할 수
    • --orphan옵션 새로운 분기 (와 같이 생성된다 -b) 그러나 어떤 커밋 기존 기반으로하지 않습니다.

git checkout man-page 에서 읽을 수있는 몇 가지 옵션이 더 있습니다.이 모든 옵션 은 한 커밋에서 다른 커밋으로 이동하는 것과 관련이 HEAD있습니다.


이해에 도움이 될 수 있도록 파일, 폴더 및 브랜치로 체크 아웃하는 몇 가지 사용 사례를 설명하겠습니다.

이름이 지정된 폴더가 dev있고 index.html모든 것이 추적되고 작업 디렉토리가 깨끗 하다고 가정 해 보겠습니다 .

실수로 파일 이름을 변경 index.html하고 실행 취소하려면 git checkout index.html현재 선택한 분기 저장소에서 해당 파일 상태를 복구하기 만하면 됩니다.

이제 dev폴더를 변경 하고 복구하려면. 나는 사용할 수 git checkout dev있지만 dev해당 폴더를 체크 아웃하는 대신 이미 명명 된 분기 가 있으면 해당 분기를 끌어 당깁니다. 그것을 피하기 위해 차라리 git checkout -- dev.

이제 맨손으로 이중 대시는 현재 분기를 나타내며 dev현재 선택한 분기의 폴더 git에 요청합니다 .

마찬가지로 내가하면 git checkout alpha dev알파 브랜치에서 dev 폴더를 가져옵니다.

이 답변은 첫 번째 질문 'git checkout really mean'입니다.


"체크 아웃하려면"은 저장소에서 주어진 커밋을 가져와 작업 디렉토리에서 관련 파일 및 디렉토리 트리의 상태를 다시 만드는 것을 의미합니다.

브랜치 헤드 아닌 커밋 (예 :)을 체크 아웃 할 때 git checkout HEAD~2, 당신은 소위 분리 된 헤드에 있습니다. 여기서 커밋을 만들 수 있지만 다른 브랜치로 전환하면 해당 커밋은 브랜치 이름으로 복구 할 수 없으며 일정 시간이 지나면 가비지 수집기에 의해 제거 될 수도 있습니다.

참고 URL : https://stackoverflow.com/questions/15296473/what-do-git-checkouts-really-mean

반응형