변경 내용 분기 및 병합

완료됨

Bicep 코드를 작업할 때 한 번에 두 가지 이상을 작업해야 하는 것이 일반적입니다. 예를 들어 장난감 회사 웹 사이트를 작업하는 다음과 같은 두 가지 시나리오가 있습니다.

  • 웹 사이트 개발 팀은 Bicep 파일을 중요한 변경 내용으로 업데이트하기 위해 여러분의 도움을 원합니다. 그러나 이 팀은 이러한 변경 내용을 아직은 적용하고 싶지 않습니다. 여러분은 새 버전에 대한 작업과 동시에 현재 웹 사이트 라이브 버전을 약간 변경할 수 있어야 합니다.
  • 여러분은 웹 사이트 성능을 향상하는 데 도움이 될 것 같은 실험적 변경 내용을 작업하고 있습니다. 그러나 이러한 변경 내용은 아직 확정된 것이 아닙니다. 준비가 완료되기 전에는 웹 사이트의 라이브 버전에 이 변경 내용을 적용하지 않으려고 합니다.

이 단원에서는 Git 분기에 대해 알아봅니다.

참고

이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.

분기란?

분기는 파일의 여러 활성 복사본을 확보하는 방법을 제공합니다. 언제든지 원할 때 분기를 만들고 분기 간에 전환할 수 있습니다. 분기 작업이 완전히 끝나면 분기를 다른 분기에 병합할 수 있습니다. 또는 분기를 삭제할 수 있습니다. 분기를 삭제하면 모든 변경 내용이 제거됩니다.

모든 작업에 분기를 사용하는 것이 일반적입니다. 종종 한 분기를 파일의 알려진 올바른 버전 또는 라이브 버전을 나타내는 기본 분기로 지정하기도 합니다. 전통적으로 이 분기를 main 분기라고 합니다. 다른 분기는 원하는 만큼 만들 수 있습니다. 분기에 대한 변경 내용이 준비되면 분기를 main 분기에 병합합니다.

분기를 만들고 체크 아웃

Git에서 빠르고 쉽게 분기를 만들 수 있습니다. 이 작업을 수행하는 몇 가지 방법이 있지만, 일반적으로 git checkout 명령을 사용하는 것이 가장 쉬운 방법입니다. 다음 예제는 my-experimental-changes라는 새 분기를 만드는 방법을 보여줍니다.

git checkout -b my-experimental-changes

이 명령은 실제로 두 가지 작업을 수행합니다. 즉, my-experimental-changes 분기를 만들고, 새로 만든 분기를 체크 아웃합니다. 체크 아웃 이란 폴더에 표시되는 파일의 복사본에 분기의 내용이 반영된다는 것을 의미합니다. 서로 다른 변경 내용을 갖는 2개의 분기가 있는 경우 하나의 분기를 체크 아웃하면 다른 분기에서 두 가지 변경 내용 간에 전환할 수 있습니다.

git checkout 명령을 사용하여 기존 분기로 전환할 수 있습니다. 이 예제에서는 main 분기를 체크 아웃합니다.

git checkout main

참고

일반적으로 다른 분기를 체크 아웃하려면 먼저 변경 내용을 커밋해야 합니다. 체크 아웃할 수 없는 경우 Git에서 경고를 표시합니다.

분기 작업

분기로 전환한 후에는 평소처럼 파일을 커밋합니다. 사실, 지금까지 한 모든 작업은 분기에서 수행되었습니다. 새 리포지토리를 만들 때 기본 분기인 main 분기에서 작업을 진행했습니다.

분기를 체크 아웃한 상태에서 일부 변경 내용을 커밋하면 커밋이 분기와 연결됩니다. 다른 분기로 전환하면 분기를 병합할 때까지 아마도 git log 기록에 커밋이 표시되지 않을 것입니다.

분기 병합

분기는 Bicep 코드의 현재 라이브 버전에서 진행 중인 작업을 분리하는 좋은 방법입니다. 그러나 분기에서 파일 변경을 마친 후 변경 내용을 main 분기에 다시 병합하려는 경우가 자주 있습니다.

한 분기에서 작업할 때 git merge 명령을 사용하여 다른 분기의 변경 내용을 현재 분기에 병합할 수 있습니다.

참고

병합하기 전에 병합 대상 분기(target 분기라고도 함)를 체크 아웃해야 합니다. 다른 분기에서 현재 작업 분기 병합한다는 것을 기억하세요.

다음 예제는 main 분기를 체크 아웃한 다음, my-experimental-changes 분기의 변경 내용을 main 분기로 병합하는 방법을 보여줍니다. 마지막으로, 더 이상 필요 없는 my-experimental-changes 분기를 삭제합니다.

git checkout main
git merge my-experimental-changes
git branch -d my-experimental-changes

다른 사람들과 협업할 때, 분기를 직접 병합하는 대신 끌어오기 요청을 사용하여 변경 내용을 병합하는 것이 일반적입니다. 협업 및 끌어오기 요청에 대한 자세한 내용은 잠시 후에 알아보겠습니다.

병합 충돌

Git는 한 분기의 변경 내용을 다른 분기에 병합할 때, 수정된 파일을 확인하고 변경 내용을 함께 병합하려고 시도합니다. 서로 다른 두 개의 분기에서 동일한 코드 줄을 변경하는 경우가 가끔 있습니다. 이 경우 Git는 어떤 것이 올바른 버전의 코드인지 선택할 수 없으므로 병합 충돌을 생성합니다.

이 모듈에서는 병합 충돌에 대해 자세히 설명하지 않지만, 병합 충돌이 발생할 수 있다는 사실을 알아 두는 것은 중요합니다. 다른 사람들과 협업할 때는 병합 충돌이 보다 자주 발생합니다. 이 모듈의 요약 파트에서는 Git 및 Visual Studio Code를 사용하여 병합 충돌을 해결하는 방법에 대한 정보 링크를 제공합니다.

Git 워크플로

이 모듈에서는 분기의 기본 사항에 대해 알아봅니다. 분기는 매우 강력하며 유연한 작업을 지원합니다. 예를 들어 다른 분기에서 분기를 만들고, 분기를 다른 분기에 병합할 수 있습니다. 분기를 사용하여 사용자와 팀의 작업 방법을 지원하는 모든 종류의 워크플로를 만들 수 있습니다.

이 모듈에서는 트렁크 기반 개발라는 간단한 워크플로를 사용합니다. 이 워크플로에는 단일 trunk 분기가 있습니다. 예를 들어, 이 문서의 예제에서는 main을 사용합니다. 이 분기는 코드의 알려진 올바른 버전을 나타냅니다. 변경 작업 또는 다른 작업을 수행할 때 이 트렁크에서 분기를 만듭니다.

트렁크 기반 개발에서는 트렁크 분기에서 직접 변경하는 것을 권장하지 않습니다. 다른 분기를 짧은 시간 동안만 유지하려고 하므로 병합 충돌을 최소화하는 데 도움이 됩니다. 그런 다음, 작업을 완료할 때 이러한 분기를 병합하고 삭제합니다.

변경 내용을 릴리스하는 빈도를 제어해야 하는 팀 환경에서 자주 발생하는 그 밖의 워크플로도 있습니다. 이 모듈의 요약 파트에서는 Git 워크플로에 대한 정보 링크를 제공합니다.