>  기사  >  개발 도구  >  Git에서 Branch는 무엇을 의미하나요?

Git에서 Branch는 무엇을 의미하나요?

青灯夜游
青灯夜游원래의
2021-12-29 17:16:2514472검색

git에서 브랜치는 메인 라인에서 분리되어 다른 작업을 수행하는 것을 의미하며, 메인 라인은 일시적인 요구 사항을 해결하는 데 사용할 수 있습니다. 브랜치가 완료되면 메인 라인에 병합될 수 있습니다. 브랜치의 작업이 완료되면 삭제할 수 있습니다.

Git에서 Branch는 무엇을 의미하나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, Git 버전 2.30.0, Dell G3 컴퓨터.

git의 브랜치는 무엇인가요

이름에서 알 수 있듯이 브랜치는 메인 라인에 영향을 주지 않고 다른 작업을 수행하기 위해 메인 라인에서 작업을 계속할 수 없습니다. 약간 스레드와 비슷합니까? 최종 분기 작업이 완료된 후 메인 라인에 병합되고 분기 작업이 완료되어 삭제할 수 있습니다. 이것은 매우 편리하지 않습니까? 메인 라인은 계속해서 그 일을 하고 있으며, 브랜치는 일시적인 필요를 해결하는 데 사용됩니다. 두 라인은 서로 아무 관련이 없습니다.功能 Git의 분기 기능은 특히 강력합니다. 분기의 포인터가 분기의 생성을 시작해야 하는 위치를 가리키도록 다시 생성되는 한(커밋) 포인터는 최신 커밋 객체를 가리키면 원래 브랜치의 포인터는 원래 개발 위치를 가리킵니다. 어느 브랜치에서 개발할 때 HEAD는 해당 브랜치의 최신 커밋 객체 커밋을 가리킵니다. 처음에는 그런 개념이 있는데, 나중에는 차차 이해하게 될 거예요.

브랜치 생성 및 병합 git Branch 명령을 사용하면 git Warehouse에 몇 개의 브랜치가 있는지, 현재 작업 중인 브랜치가 무엇인지 확인할 수 있습니다. 앞에 * 표시가 있는 것이 우리가 있는 곳입니다. 현재. git Branch name 명령을 통해 브랜치를 생성할 수 있으며, 이 브랜치의 포인터는 HEAD와 동일한 객체를 가리키는 최신 커밋 객체를 가리킵니다. git checkout name 명령을 통해 대상 브랜치로 전환할 수 있습니다. 기본 브랜치는 master입니다. 브랜치를 생성하고 전환할 때 실제로는 포인터를 찾기 위한 포인터를 생성하고, 찾은 포인터가 가리키는 커밋 객체를 찾은 다음, 커밋 객체가 가리키는 파일 스냅샷으로 작업공간을 복원하면 되는 단순한 문제이다. 우리가 일할 수 있도록. 한 번 제출하면 포인터가 가장 최근에 제출된 개체를 다시 가리킵니다. 이는 매우 간단합니다.

그림 1과 같이 브랜치 테셋을 설정하기 전에는 마스터 브랜치가 하나뿐이었습니다. 모든 개발은 이 브랜치에서 이루어졌으며 HEAD는 c3 이전에 가장 최근에 제출된 커밋 개체 c3을 가리켰습니다. c1과 c2를 두 번 제출했습니다. 이때 그림 2와 같이 git 브랜치 test를 통해 테스트 브랜치를 생성합니다. 이때 HEAD는 여전히 git checkout 테스트가 제출된 최신 c3을 가리킵니다. 테스트 브랜치인 HEAD는 현재 테스트 브랜치를 가리킵니다. 현재 c3의 최신 제출은 실제로 .git의 동일한 데이터 c3을 가리킵니다.

이때 테스트 브랜치에서 여러 번 개발하여 c4와 c5 두 가지 버전을 제출하면 그림 3과 같이 테스트와 HEAD 모두 테스트 브랜치의 최신 제출 c5를 가리킵니다. 아직 변경사항은 없으며 여전히 c3을 가리키고 있습니다. 이때 테스트 브랜치가 마스터 브랜치에 병합되면 git은 아무것도 할 필요가 없습니다. 마스터를 포인트로 이동하기만 하면 됩니다. 이 프로세스를 Fast-forward Enter라고 합니다. 이때 테스트 작업이 완료되면 git Branch -d test를 통해 삭제하고 메인 브랜치 마스터에서 개발을 이어갈 수 있습니다. 이 경우 테스트 브랜치가 헛되이 구축될 것입니다.

그래서 이때 master 브랜치에서 또 다른 개발이 이루어지고 c6과 c7 두 가지 버전이 제출된다면, 이때 master와 HEAD 포인터는 c7을 가리킨다(그림 4). 브랜치에서 개발하는 경우 HEAD는 어느 브랜치의 커밋을 가리킵니다. 이때 두 브랜치를 병합하면 다음과 같습니다.

그림 5와 같이 먼저 마스터 브랜치로 전환한 후 git merge test를 통해 테스트 브랜치를 마스터 브랜치로 병합합니다. 이때 git은 양쪽에 개발이 있기 때문에 더 이상 단순히 포인터를 이동하지 않습니다. 따라서 git은 브랜치의 최신 커밋 c5 및 c7과 두 브랜치의 공통 조상 커밋 객체 c3을 모두 처리해야 합니다. 이 두 브랜치는 간단한 3자 병합을 수행하는 데 사용됩니다. 이는 새 파일 스냅샷을 생성하고 이를 기록합니다. 새로운 커밋 개체 c8. 이 병합 프로세스에 너무 많은 주의를 기울일 필요가 없습니다. 충돌이 발생하면, 즉 두 분기가 동일한 파일을 수정하면 git이 병합 작업을 중지합니다. 충돌을 처리한 다음 제출(c8)하고 병합합니다. 이때 master와 HEAD는 모두 c8을 가리키고 있으나 test는 옮겨지지 않았습니다. 이때 test에서 계속 개발한 후 master에 merge하면 더 이상 사용할 수 없습니다. .

로컬 브랜치, 추적 브랜치, 원격 브랜치

여기에는 세 가지 개념이 있습니다. 로컬 브랜치는 git 브랜치를 통해 볼 수 있는 브랜치, 즉 자체 Git Warehouse가 소유한 브랜치를 모두 볼 수 있습니다. 그것을 사용하십시오. 원격지점은 원격창고 지점의 인덱스인데 실제로는 로컬 지점인데 이동할 수는 없고, 서버에서 로컬로 업데이트한 코드를 기반으로 이동해야 하는 기능이다. 원격 지점은 중앙 서버의 대화형 업데이트를 통해 얻은 최신 버전도 포인터입니다. 추적 분기는 이해하기 더 어렵습니다. 로컬 분기이기도 하지만 원격 분기에 해당합니다. 로컬 분기 중 하나가 특정 원격 분기에 해당하면 이는 원래 마스터 분기입니다. Branch는 원격 브랜치 원본/마스터에 해당하는 추적 브랜치입니다. 여기서 원본은 원격 웨어하우스의 이름입니다. 브랜치를 지정하지 않고 마스터 브랜치에서 업데이트(가져오기, 가져오기) 또는 푸시(푸시)를 수행하는 경우 , 기본값은 Origin/입니다. 마스터 브랜치가 업데이트되거나 Origin/mster 브랜치에 제출됩니다.


그림 7과 그림 8을 보면 원본/마스터 원격 브랜치가 서버에 연결하고 서버를 업데이트한 후에만 이동된다는 점을 제외하면 로컬 브랜치 생성과 매우 유사하다는 것을 쉽게 알 수 있습니다. 아래 그림 9와 같이 로컬로 코드를 생성합니다.


원격 코드를 로컬로 업데이트하는 두 가지 명령, 가져오기 및 가져오기가 원격 코드를 로컬로 업데이트하지만 병합 작업을 수행하지는 않습니다. 직접 확인하고 충돌 등을 해결한 다음 직접 실행해야 합니다. Merge는 업데이트된 코드를 자체 분기에 병합하지만 Pull은 이 두 작업을 한 단계로 결합하여 서버 코드를 직접 업데이트하고 이를 물론, 충돌이 발생하면 직접 해결해야 합니다. 따라서 업데이트를 구현하기 위해 일반적으로 가져오기를 사용합니다. 약간 번거롭기는 하지만 문제가 발생하기 쉽습니다.

          로컬 코드를 원격 창고, 즉 중앙 서버에 푸시합니다. 일반적으로 우리가 푸시하는 데이터는 git push Origin master:master 여기서는 원격 창고 이름, 로컬 지점 이름, 즉 원격 지점을 지정합니다. 로컬 마스터 브랜치의 데이터를 원격 창고 원본의 마스터 브랜치로 푸시합니다. 로컬 마스터 브랜치가 추적 브랜치인 경우 지정하지 않는 한 데이터를 푸시하기 위해 원격 창고에서 해당 브랜치를 찾습니다. 또는 git push 원본 작업을 직접 수행하고 원격 창고 이름만 지정하면 git은 현재 있는 지점과 해당 원격 창고의 지점을 기반으로 데이터를 푸시합니다. 추적 지점. 물론, git push Origin:master라면 여기서 로컬 브랜치 이름은 비어있습니다. 이 작업은 빈 브랜치를 원격 웨어하우스의 마스터 브랜치로 푸시하는 것이고, 그 결과는 마스터 브랜치를 삭제하는 것입니다.

추적 분기는 사용하기 매우 쉽기 때문에 추적 분기를 만드는 방법은 두 가지가 있습니다. 첫 번째 방법은 추적 분기의 이름을 지정하지 않으면 기본적으로 원격 분기를 제거하는 것입니다. 는 원격 웨어하우스의 브랜치 이름입니다. 동일: git checkout --track Origin/test, 추적 브랜치 이름을 바꾸면 git checkout -b name Origin/test, 추적 브랜치가 생성됩니다. name이라는 분기 추적 분기는 원격 웨어하우스의 테스트 분기에 해당합니다. 두 번째 방법은 로컬 브랜치가 이미 존재하고 이를 원격 브랜치에 대응하여 추적 브랜치가 되도록 하는 것입니다. 또한 git Branch --set-upstream test Origin/test 또는 git Branch라는 두 가지 명령을 사용할 수 있습니다. -f - -track 테스트 원점/테스트 여기서는 로컬 기존 테스트 분기가 원격 테스트 분기를 추적하도록 합니다.

git 지점 관리

 git은 브랜치를 생성하고 브랜치를 병합하는 것이 매우 간단하고 빠르기 때문에 개발 과정에서 브랜치를 미친 듯이 사용할 수 있으며 git의 핵심 게임 플레이 중 하나는 브랜치 사용을 적극 권장하지만 브랜치를 사용해도 될까요? 브랜치를 너무 많이 생성하는 것이 아니라 적정량만 생성하면 관리가 번거로우니 브랜치 관리 전략인 git을 추천합니다. git을 더 편안하게 사용하려면 http://nvie.com/posts/a-successful-git-branching-model/에서 이 전략에 대해 알아보십시오.

추천 학습: "Git Tutorial"

위 내용은 Git에서 Branch는 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.