GIT는 지점을 사용하여 개발 스트림을 분리하여 안정적인 릴리스 분기가 오염되는 것을 방지합니다. 지점에서 작업을 메인 스트림으로 가져 오는 것은 가지를 병합하는 것을 의미합니다. 당신이하는 방법은 다음과 같습니다.
git의 병합은 무엇입니까?
git에서 지점을 병합 할 준비
병합 수행
git에서 빠르게 병합 된 병합을 수행합니다
GIT의 충돌을 해결하는 방법
모든 것이 결국 합쳐집니다
git의 병합은 무엇입니까?
Git은 분기를 간단하고 빠르게 만들도록 설계되었습니다. 다른 버전 제어 시스템과 달리 GIT에 분기는 사소한 문제입니다. 특히 다중 개발자 프로젝트에서 Branching은 GIT의 핵심 조직 도구 중 하나입니다.
지점 샌드 박스 새로운 개발 노력을 통해 다른 지점, 특히 메인 또는 마스터 브랜치의 코드에 영향을 미치지 않고 코드를 수정하거나 추가 할 수 있습니다. 여기에는 일반적으로 코드베이스의 안정적인 버전이 포함됩니다.
안정적인 코드 버전에서 이러한 변경 사항을 분리하는 것은 완벽하게 이해됩니다. 그러나 조만간 새 코드는 테스트, 검토 및 고무 스탬프가 마스터 브랜치로 롤링됩니다. 이 시점에서 지점을 마스터 브랜치로 병합해야합니다.
실제로, 지점에는 하위 브랜치가있을 수 있으므로 지점을 마스터 브랜치 대신 다른 지점으로 병합 할 수 있습니다. 합병은 항상 하나의 지점을 가져 와서 합병한다는 것을 기억하십시오. 표적 지점, 그 지점이 무엇이든. 마스터 브랜치를 다른 지점으로 병합하려면 그렇게 할 수도 있습니다.
GIT의 대부분의 작업과 마찬가지로 로컬 저장소에서 합병을 수행하여 원격 저장소로 밀어 넣습니다.
git에서 지점을 병합 할 준비
로컬 git 저장소와 원격 git 저장소가있는 소규모 개발 프로젝트가 있습니다. 우리는“마스터”브랜치에서“bugfix14”라는 지점을 만들고 버그에 대한 솔루션을 작업했습니다.
그 작업이 완료되었으며 코드를 테스트했습니다. 그것은 모두 예상대로 작동합니다. 우리는 이러한 변경 사항을 마스터 브랜치로 굴려서 수정이 소프트웨어의 다음 릴리스의 일부가되도록하고 싶습니다.
병합을 수행하기 전에 약간의 준비가 있습니다. 우리는 대상 지점 (이 경우“마스터”지점과 합병 할 분기가 모두 최신 상태인지 확인해야합니다.
- 지점 Bugfix14에서 : 이것은 우리의 현재 지점입니다.
- 당신의 지점은‘Origin/Bugfix’로 최신 정보입니다. : 로컬 저장소의 지점은 원격 저장소의 지점과 동일한 커밋 기록을 가지고 있습니다. 그것은 그들이 동일하다는 것을 의미합니다.
- 커밋 할 것이 없습니다 스테이징 영역에는 커밋되지 않은 변화가 없습니다.
- 작업 트리 청소 : 작업 디렉토리에는 무시한 변경 사항이 없습니다.
이들 모두는 지점이 최신 상태임을 나타냅니다. 이 중 하나라도 변경 사항이 존재한다고 표시되면 변경 사항을 무대에 올려 놓고 리모컨으로 밀어야합니다. 다른 사람 이이 파일에서 작업 한 경우 원격 저장소에서 변경 사항을 가져와야 할 수도 있습니다.
지점을 확인하면 병합 된 병합 프로세스를 단순화합니다. 또한 최신임을 확인할 수 있습니다. 마스터 브랜치를 살펴 보겠습니다.
우리는 "마스터"지점이 최신 상태라는 동일한 확인을받습니다.
관련된: git 워크 플로를 선택하는 방법 & amp; 팀에 적합한 분기 모델
병합 수행
"Bugfix14"지점은 "마스터"브랜치에서 분기되었습니다. "Bugfix14"브랜치가 만들어진 후 "마스터"브랜치에 대한 커밋이있었습니다. “Bugfix14”지점에 몇 가지 커밋이있었습니다.
우리는 두 개의 지점이 최신 상태인지 확인했으며“마스터”지점을 확인했습니다. "Bugfix14"브랜치를 "마스터"브랜치로 병합하기 위해 명령을 발행 할 수 있습니다.
병합이 발생합니다. "Bugfix14"브랜치는 여전히 존재하지만 이제 해당 브랜치에서 이루어진 변경 사항은 "마스터"브랜치로 병합되었습니다.
이 경우 병합 명령은 a를 수행합니다 3 방향 병합 . 지점은 두 개 뿐이지 만 3 개의 커밋이 관련되어 있습니다. 그것들은 어느 지점의 수장이며, 합병 행동 자체를 나타내는 세 번째 커밋입니다.
원격 저장소를 업데이트하려면 git 푸시 명령.
어떤 사람들은 병합 된 후 측면 분기를 삭제하는 것을 선호합니다. 다른 사람들은 프로젝트의 진정한 개발 역사의 기록으로 보존하기 위해주의를 기울입니다.
분기를 삭제하려면
git 지점
명령
-디
(삭제) 옵션.
에게 분기를 삭제하십시오 원격 저장소 에서이 명령을 사용하십시오.
당신은 선형 커밋 역사를 가지고 있지만 진정한 역사는 아닙니다.
관련된: 로컬 및 원격 저장소에서 GIT 분기를 삭제하는 방법
git에서 빠르게 병합 된 병합을 수행합니다
"마스터"지점에 대한 커밋을하지 않았다면, 당신의 역사는 다음과 같이 보일 것입니다. 당신이 있다면 이것도 보게 될 것입니다 재건 개발 지점이 "마스터"지점의 끝에 첨부되도록 개발 지점.
"마스터"브랜치에는 "Bugfix15"브랜치를 병합하기 위해 커밋이 없기 때문에 모든 git은 "Master"헤드 포인터가 "Bugfix15"브랜치의 마지막 커밋에 대한 포인트입니다.
GIT는 빠르게 병합 될 것입니다 할 수있을 때마다 . "마스터"지점에 커밋되면 빠른 포워드 병합이 불가능하다는 것을 의미하면 Git은 3 방향 병합 .
당신은 할 수 없습니다
힘
결국 불가능한 병합은 불가능할 수도 있지만, 당신은 그것이 빠르게 병합되거나 아무것도 없을 것이라고 선언 할 수 있습니다. GIT에게 가능한 경우 빠른 포워드 병합을 사용하도록 지시하지만 할 수없는 경우 3 방향 병합을 수행하지 않도록하는 옵션이 있습니다. 옵션은입니다
--ff 전용
(빠른 포장 합병 만 해당).
이것은 "Bugfix15"지점을 "마스터"브랜치로 병합하지만, 빠른 포장 병합이 가능한 경우에만 가능합니다.
이 경우 "마스터"지점에 대한 커밋이 있었으므로 빠르게 포장 된 병합은 불가능합니다.
GIT의 충돌을 해결하는 방법
두 가지에서 동일한 파일의 동일한 부분이 변경된 경우 분기를 병합 할 수 없습니다. 상충되는 편집을 해결하려면 인간의 상호 작용이 필요합니다.
여기서 우리는“Master”브랜치로 병합하려는“Bugfix17”이라는 분기에서“rot.c”라는 파일을 변경했습니다. 그러나 "Rot.c"는 "마스터"지점에서도 변경되었습니다.
우리가 그것을 합병하려고 할 때, 우리는 갈등이 있다는 경고를받습니다. Git은 충돌하는 파일을 나열하고 병합이 실패한 것을 알려줍니다. 우리는 그것을 완전히 사용하여 다시 배송 할 수있었습니다
-아버트
옵션:
그러나 합병을 해결하는 것은 소리만큼 무섭지 않습니다. Git은 우리를 돕기 위해 몇 가지 일을했습니다. 충돌하는 파일 중 하나를 편집하면 파일 만 있으면 충돌하는 코드 섹션이 강조 표시됩니다.
각 갈등은 7 명의 캐릭터에 의해 제한됩니다.
& lt; & lt; & lt; & lt; & lt; & lt;
”그리고 7 인 캐릭터”
& gt; & gt; & gt; & gt; & gt; & gt;
“, 7 개의 징후와 함께”
=======
" 그들 사이에.
- 평등 부호 위의 코드는 합병하는 지점에서 나온 것입니다. ~ 안으로 .
- 평등 부호 아래의 코드는 당신이하려는 지점의 코드입니다. 병합 .
7 자 중 하나를 쉽게 검색하고 파일을 통해 충돌에서 충돌로 이동할 수 있습니다. 각 충돌마다 보관할 편집 세트를 선택해야합니다. 거부하고있는 코드와 GIT가 추가 한 7 자 줄을 편집해야합니다.
우리는 코드를“Bugfix17”브랜치에서 유지할 것입니다. 편집 후 파일은 다음과 같습니다.
이제 합병을 계속할 수 있습니다. 그러나 우리는 다음을 사용합니다
저지르다
그렇게하지 말라고 명령하십시오
병합
명령.
우리는 파일을 준비하고 평소와 같이 파일을 헌신하여 변경 사항을 커밋합니다. 최종 커밋을하기 전에 상태를 확인하겠습니다.
병합이 완료되었습니다. 이제 이것을 원격 저장소로 푸시 할 수 있습니다.
관련된: 고정, 편집 또는 실행 취소 방법 (GIT 기록 변경)
모든 것이 결국 합쳐집니다
모든 지점은 결국 병합되어야하므로 변화가 고아와 잊혀지지 않도록해야합니다.
지점 병합은 쉽지만 갈등을 다루는 것은 바쁘고 더 큰 팀에서 복잡해질 수 있습니다. 충돌을 해결하려면 코드가 무엇을하는지, 왜 변경한지 설명하기 위해 각 개발자의 의견이 필요할 수 있습니다. 당신은 어떤 편집을 유지 해야하는지에 대한 정보에 근거한 결정을 내리기 전에 그것을 이해해야합니다.
- › Git에서 지점의 이름을 바꾸는 방법
- › 원격 git 브랜치를 체크 아웃하는 방법
- › git의 변화를 숨기는 방법
- › Github에서 분기를 전환하는 방법
- › Git Rebase : 알아야 할 모든 것
- › OnePlus 11은 여기에 있지만 거친 출발
- › Microsoft Edge는 AI 채팅과 Windows에서 새로운 모습을 얻고 있습니다.
- › iPhone 팬을위한 최고의 이어 버드는 최저 가격을 기록했습니다.