무의식중에 Git를 사용한 제가 브랜치 조작을 잘 이해할 때까지.

3817 단어 Git
아무래도 Git를 사용한 것 같다.
기본적으로gitadd/commit/push/pull/clone이 가능하면 최소한으로 개발할 수 있기 때문에 어렵기 전에 이렇게 하면 된다고 생각합니다.
지점 조작이 로컬 저장소를 잘 모르기 때문에 열심히 공부해야 할지 말아야 할지 생각하고 배웠다.

개요


Git의 브랜치 작업은 HEAD 위치에서만 미끄러집니다.
다른 디렉터리를 잘라낸 것이 아닙니다.

분기 작업 시 발생하는 문제


세 갈래로 나누다
  • 원격 저장소와 같은 지점(develop)
  • 실험 지점
  • 필수 지점
  • 이런 역할 분담으로 운영되고 있다.
    로컬 개발자부터 실험 지점 → 필수 조건 지점의 순서에 따라 지점을 차단합니다.
    필요한 수요 지점push를 원격 저장소에 연결할 때 원격 버전이 상당히 선진적이기 때문에pull을 결정하고 새로운 차이를 도입합니다.
    상당히 큰 삐걱거렸는데 왜 실험 지점의 수정 내용이 사라졌는지 모르겠다.
    이유는 모르겠지만commit 없이 지점을 전환했기 때문에
    나는 작업 목록의 내용이 사라졌다고 생각한다.
    (사라질 위험이 있을 때, 나는 체크아웃을 할 수 없다고 생각했는데, 그럴 수도 있나?)
    분위기 속에서 지점 운용을 하는 계기다.
    다행히 실험 지점의 코드 자체는 미세하게 수정되었는데, 결과적으로'gitreset'으로 최종commit로 돌아왔을 때, 코드 내용만 복사하였다
    분지 자체를 없애고 다시 깨끗하게 만드는 원시적인 수단을 썼다.
    다만 매번 원격 위치로 업데이트될 때마다 실험 중의 지점이 엉망진창으로 변하면 너무 무섭다.

    네가 갈라섰을 때, 진정으로 발생한 일은


    지점을 차단하는 작업은 아래의 명령에 따라 진행해야 하지 않겠습니까?
    하다
    git branch b1
    
    브랜치를 b1로 이동
    git checkout b1
    
    나는 이쪽에서 하는 파이지만, 지령 하나로도 할 수 있다.
    (옵션을 기억할 수는 없겠지...)
    제작 b1, 이동
    git checkout -b b1
    
    지금까지 나는 이 조작을 통해 또 다른 목록을 형성했다는 인상을 주었다.
    이것은 완전히 잘못된 것이다.
    다른 버전 관리 시스템이라면 지점을 차단하는 작업도 있다 = 작업 목록의 원형 복사본.
    Git는 linus torvalds(Linux에서 만든 핀란드인)가 이전 버전 관리 시스템(VCS)에 화가 나서 만든 것이다.
    나 자신은Subversion 등의 버전 관리 시스템을 사용한 적이 없다. 왜냐하면 갑자기git,branch가 고속으로 조작하기 때문이다.이런 느낌은 없어요.
    나는 당연히 그것을 받아들였지만, 다른 것 같았다.
    심지어 Git의 분기 모드가 Git 기능 중 최고라는 말도 있다.
    바로 이 기능으로 Git는 다른 VCS와 경계선을 긋게 됩니다.
    뭐가 그렇게 좋아요?
    Git의 분기 기능은 매우 가볍다.
    브랜치 생성은 거의 한 순간에 이루어질 수 있고 브랜치를 빠르게 전환할 수 있습니다.
    Git은 다른 VCS와 달리 브랜치가 생성되고 병합되는 워크플로우를 자주 반복하는 것을 권장합니다.
    하루에 여러 가지를 잘라도 신기하지 않다.
    이 기능을 이해하고 파악함으로써 당신은 강력하고 비길 데 없는 도구를 얻을 수 있을 것이다.
    이것은 당신의 개발 수법을 글자 그대로 완전히 바꾸게 할 것이다.
    3.1 Git 분기 기능 - 분기 기능
    하지만 작업 디렉토리를 복사하지 않으면 Git는 어떻게 브랜치를 변경합니까?에서 설명한 대로 해당 매개변수의 값을 수정합니다.
    Git의 버전 제어는 commit의 스냅샷으로 이루어집니다.
    현재 어느 스냅샷에 있는지 파악하기 위해 HEAD라는 포인터가 있습니다.
    commit 취소하고 싶을 때.
    git reset --hard HEAD
    
    의 명령이지만 실제로 HEAD가 무엇인지는 알 수 없습니다.
    HEAD는 저장소에서 현재 커밋된 위치의 포인터입니다.
    commit뿐만 아니라 branch도 이 HEAD를 활용했다.
    branch
    git branch testing
    

    브랜치를 자를 때 여기서 마스터→테스트로 자르세요.
    이 경우 스냅샷의 위치는 동일합니다.
    그리고 HEAD는 master를 가리킨다.
    체크아웃 좀 합시다.
    테스트로 분기 이동
    git checkout testing
    

    checkout은 HEAD가 testing을 가리키는 것을 허용합니다.
    다만 이때 두 브랜치의 스냅샷 내용은 모두 같고 결과는 같은 버전을 가리킨다.
    이후testing으로 개발하고commit하면 브랜치 콘텐츠가 나뉜다.

    그 후에 두 가지는 서로 갈라질 것이며 각자의 변경은 서로 영향을 주지 않을 것이다.
    실험 지점이라면 만들어서 그대로 두면 되고, 주류에 편입하고 싶으면merge를 사용하세요.
    수정 내용이 적절하면 conflict가 발생하기 때문에 거기만 수정하면 메르지를 쉽게 할 수 있을 거예요.

    원격 추적 지점 정보


    이것도 쓰고 싶은데 길어져서 다른 일을 해요.

    참고 자료


    3.1 Git 분기 기능 - 분기 기능
    기사에 나온 이미지도 여기서부터 시작된다.

    좋은 웹페이지 즐겨찾기