Git 풀 마스터를 분기로 가져오기

Yahya Irmak 2023년9월13일
  1. 다른 브랜치로 마스터 풀하기
  2. git merge 명령어를 사용하여 다른 브랜치로부터 master 변경 사항 풀기
  3. git rebase 명령어를 사용하여 다른 브랜치로부터 master 변경 사항 풀기
  4. git pull 명령을 사용하여 master에서 다른 브랜치로 변경사항 가져오기
  5. 결론
Git 풀 마스터를 분기로 가져오기

Git 도구를 사용하여 소프트웨어를 개발하는 동안, 서로 다른 기능에 대해 서로 다른 브랜치를 생성할 수 있습니다. 마스터를 변경할 때, 해당 변경 내용은 자동으로 다른 브랜치에 추가되지 않습니다.

이 기사에서는 Git에서 마스터에서 다른 브랜치로 모든 변경 사항을 풀하는 방법에 대해 설명합니다.

다른 브랜치로 마스터 풀하기

Git 도구를 사용하면 마스터에서 만든 변경 사항을 다른 브랜치로 풀어야 할 수도 있습니다. 이러한 변경 사항은 자동으로 전송되지 않으므로 수동으로 만들어야 합니다.

기사의 나머지 부분에서는 main으로 변경된 마스터 브랜치에서 dev 브랜치로 변경 사항을 세 가지 다른 방법으로 가져오는 방법에 대해 설명합니다.

참고
무신론 장인들에게 사람으로서 인격을 상실시키는 것으로 여겨지므로, 마스터 브랜치는 main으로 이름이 변경되었습니다.

git merge 명령어를 사용하여 다른 브랜치로부터 master 변경 사항 풀기

이를 달성하는 다른 방법은 git merge 명령어를 사용하는 것입니다.

단계 1: master 브랜치 체크아웃하기

git checkout 명령어를 사용하여 master 브랜치로 전환하여 시작합니다.

git checkout master

이 명령은 가져올 변경 사항의 소스인 master 브랜치에 있는지 확인합니다.

단계 2: 최신 변경 사항 가져오기

머지하기 전에 로컬 master 브랜치가 원격 master 브랜치와 최신 상태인지 확인하는 것이 중요합니다. 이를 위해 git pull 명령어를 사용합니다.

git pull origin master

이 명령은 원격 master 브랜치에서 최신 변경 사항을 가져와 로컬 master 브랜치에 병합합니다.

단계 3: 기능 브랜치 체크아웃하기

이제 가져올 변경 사항을 원하는 기능 브랜치로 다시 전환합니다. 실제 기능 브랜치 이름으로 git checkout 명령어를 사용하여 전환합니다.

git checkout feature-branch

단계 4: master를 기능 브랜치로 병합하기

기능 브랜치를 체크아웃한 후, git merge 명령어를 사용하여 master 브랜치의 변경 사항을 병합할 수 있습니다.

git merge master

git merge를 자세히 살펴보기

git merge 명령어는 한 브랜치에서 다른 브랜치로 변경 사항을 통합하는 데 사용됩니다. 이 경우 master에서 기능 브랜치로 변경 사항을 병합하고 있습니다.

만약 두 브랜치가 분화된 이후 새로운 변경 사항이 있으면 Git은 자동으로 새로운 병합 커밋을 생성합니다. 만약 충돌하는 변경 사항이 없다면, 병합은 간단하게 이루어집니다.

단계 5: 충돌 해결하기(있을 경우)

병합 중에 충돌이 발생하면 Git은 일시적으로 충돌이 발생한 파일을 멈추고 표시합니다. 이 파일들을 열어 충돌 표시자를 찾고 어떻게 해결할 것인지 결정해야 합니다. 충돌을 해결한 후 파일을 저장합니다.

파일의 충돌을 해결한 후, git add 명령어를 사용하여 해결된 것으로 표시합니다.

git add <conflicted-file>

각 충돌 파일에 대해 이 과정을 반복합니다.

단계 6: 병합 커밋하기

모든 충돌을 해결하고 파일을 해결됨으로 표시한 후, 의미있는 커밋 메시지와 함께 병합을 커밋합니다.

git commit -m "Merge branch 'master' into feature-branch"

이 커밋 메시지는 나중에 참고할 수 있도록 병합 작업을 기술합니다.

단계 7: 업데이트된 기능 브랜치 푸시하기

이제 master에서 기능 브랜치로 변경 사항을 성공적으로 병합했으므로, 업데이트된 기능 브랜치를 원격 저장소로 푸시합니다.

git push origin feature-branch

git rebase 명령어를 사용하여 다른 브랜치로부터 master 변경 사항 풀기

이를 달성하는 다른 방법은 git rebase 명령어를 사용하는 것입니다. git rebase를 사용하여 master 브랜치에서 다른 브랜치로 변경 사항을 통합하는 과정을 안내합니다.

단계 1: master 브랜치 체크아웃하기

git checkout 명령어를 사용하여 master 브랜치로 전환하여 시작합니다.

git checkout master

이 명령은 기능 브랜치에 파본되기를 원하는 변경 사항의 소스인 master 브랜치에 있는지 확인합니다.

단계 2: 최신 변경 사항 가져오기

리베이스하기 전에 로컬 master 브랜치가 원격 master 브랜치와 최신 상태인지 확인하는 것이 중요합니다. 이를 위해 git pull 명령어를 사용합니다.

git pull origin master

원격 master 브랜치에서 최신 변경 사항을 가져와 로컬 master 브랜치에 병합합니다.

단계 3: 기능 브랜치 체크아웃하기

이제 변경 사항을 병합하려는 기능 브랜치로 돌아갑니다. 실제 기능 브랜치 이름으로 dev 대신 git checkout 명령어를 사용합니다.

git checkout dev

단계 4: devmaster 위에 변경하기

특성 브랜치가 확인된 상태에서 이제 업데이트된 ‘master’ 브랜치에 이를 리베이스할 수 있습니다. 이 경우 리베이스할 브랜치의 이름인 ‘master’ 뒤에 git rebase 명령어를 사용하세요:

git rebase master

Git은 자동으로 특성 브랜치의 커밋들을 ‘master’ 브랜치 위에 적용합니다. 이 과정에서 만약 당신의 변경 사항과 ‘master’에서의 변경 사항 간에 충돌이 발생한다면, Git은 리베이스를 중단하고 이러한 충돌을 수동으로 해결하라고 요청할 것입니다.

git rebase 명령어는 커밋 히스토리를 다시 작성하는 강력한 도구입니다.

이 상황에서 git rebase master를 실행하면 Git은 특성 브랜치의 커밋 히스토리 전체(특성 브랜치가 ‘master’로부터 갈라진 지점부터 시작함)를 가져와 각 커밋을 현재 ‘master’ 브랜치의 맨 위에 다시 적용합니다.

이는 사실상 특성 브랜치를 ‘master’의 맨 끝으로 이동시키는 것과 같습니다. 마치 현재 ‘master’ 브랜치 상태에서 특성 브랜치를 생성한 것처럼요.

git rebasegit merge보다 사용하는 장점 중 하나는 선형적인 커밋 히스토리를 생성하여 이해하고 탐색하기 쉽게 만든다는 것입니다.

하지만 커밋 히스토리를 다시 작성하기 때문에, 특히 협력 환경에서는 신중하게 사용하는 것이 중요합니다.

단계 5: 충돌 해결(필요한 경우)

리베이스하는 동안 Git이 충돌을 발견하면 중단되고 어떤 파일이 충돌 상태인지 보여줄 것입니다. 이 파일들을 열고 충돌 표시자를 찾아 이를 해결할 방법을 결정해야 합니다. 충돌을 해결한 후에는 파일을 저장하세요.

하나의 파일에서 모든 충돌을 해결한 후에는 git add 명령어를 사용하여 해당 파일을 해결되었다고 표시하세요:

git add <conflicted-file>

각 파일에 있는 충돌에 대해 이 과정을 반복하세요.

단계 6: 리베이스 계속하기

모든 충돌을 해결하고 파일을 해결되었다고 표시한 후에는 다음 명령어를 사용하여 리베이스를 계속할 수 있습니다:

git rebase --continue

Git은 특성 브랜치에서 남은 커밋들을 ‘master’ 브랜치 위에 적용할 것입니다.

단계 7: 업데이트된 특성 브랜치 푸시

이제 특성 브랜치를 ‘master’에 성공적으로 리베이스했으므로 업데이트된 특성 브랜치를 원격 저장소에 푸시할 수 있습니다:

git push origin dev

git fetch rebase

git pull 명령을 사용하여 master에서 다른 브랜치로 변경사항 가져오기

‘main’ 브랜치에서 변경 내용을 작업 브랜치에 업데이트하는 git pull 사용 단계를 살펴봅시다.

단계 1: 작업 브랜치 확인

먼저 ‘main’에서 변경 내용을 업데이트할 작업 브랜치로 전환하세요. 이를 위해 git checkout 명령을 사용할 수 있습니다. ‘feature-branch’를 작업 브랜치의 이름으로 바꾸세요:

git checkout feature-branch

이 명령은 업데이트하려는 브랜치에 속해 있는지 확인합니다.

단계 2: ‘main’에서 변경사항 가져오기

작업 브랜치에 있으므로 git pull 명령을 사용하여 ‘main’ 브랜치에서 최신 변경 내용을 가져와 병합할 수 있습니다.

git pull 명령은 두 개의 Git 명령인 git fetchgit merge의 조합입니다. 이 명령은 원격 저장소에서 변경 내용을 가져와 현재 브랜치에 통합합니다.

git pull origin main --allow-unrelated-histories

이 명령의 각 부분이 하는 역할은 다음과 같습니다:

  • git pull: 가져오기 프로세스를 시작합니다.
  • origin: 원격 저장소의 기본 이름입니다. 다른 원격 저장소와 작업할 경우, origin을 해당 원격 저장소의 이름으로 대체하세요.
  • main: 변경사항을 가져올 브랜치입니다. 필요하다면 다른 브랜치 이름을 지정할 수 있습니다.
  • --allow-unrelated-histories: 이 옵션은 Git이 관련 없는 히스토리를 병합할 수 있도록 허용합니다. 이는 독립적으로 생성된 브랜치나 현재 브랜치와 공통 조상이 없는 브랜치를 결합할 때 유용할 수 있습니다.

--allow-unrelated-histories 이해하기

--allow-unrelated-histories 옵션은 현재 브랜치와 커밋 히스토리가 다른 브랜치에서 변경 사항을 가져올 때 필요합니다.

현재 브랜치와 공통된 시작점이 없거나 독립적으로 생성된 브랜치에서 변경사항을 병합하거나 가져오는 경우에 발생할 수 있습니다.

--allow-unrelated-histories를 사용함으로써 Git에게 커밋 히스토리가 명확한 공통 시작점이 없다 해도 병합을 진행하도록 지시합니다. 이는 관련 없는 브랜치들을 단일 브랜치로 통합하는 방법입니다.

단계 3: 충돌 해결(필요한 경우)

병합 과정에서 작업 브랜치와 ‘main’ 브랜치의 변경 사항이 겹치거나 충돌하는 경우, Git은 중단되고 어떤 파일에서 충돌이 발생했는지 알려줍니다.

충돌을 해결하려면 코드 편집기에서 충돌 파일을 열어야 합니다. 이 파일들 내부에는 <<<<<<<, =======, >>>>>>>와 같은 충돌 마커로 구분된 섹션이 있습니다. 파일을 직접 편집하여 어떤 변경 사항을 유지할지, 어떤 것을 버릴지 선택하세요.

파일의 충돌을 해결한 후, 변경 사항을 저장하세요.

단계 4: 충돌 해결로 표시하기

파일의 충돌을 해결한 후, git add 명령을 사용하여 충돌 해결을 표시해야 합니다. <conflicted-file>을 실제 파일 이름으로 대체하세요:

git add <conflicted-file>

각 파일에 대해 이 과정을 반복하세요.

단계 5: 병합 커밋하기

충돌을 해결하고 파일을 해결로 표시한 후, 의미 있는 커밋 메시지와 함께 병합을 커밋해야 합니다:

git commit -m "Merge changes from main into feature-branch"

이 커밋 메시지는 나중에 참고하기 위해 병합의 목적을 설명해야 합니다.

단계 6: 업데이트된 브랜치 푸시하기

마지막으로, 작업 중인 브랜치에서 수행한 변경 사항을 원격 저장소에 푸시해야 합니다:

git push origin feature-branch

이 명령을 사용하여 변경 사항이 원격 저장소에 저장되어 프로젝트에서 다른 팀원들이 접근할 수 있게 됩니다.

git pull

결론

소프트웨어 개발에서는 다양한 기능 또는 버그 수정을 위해 다른 브랜치를 유지하는 것이 일반적입니다. 그러나 main 브랜치의 최신 변경 사항을 유지하여 이후에 원활한 통합 과정을 보장하는 것이 중요합니다.

이 글에서는 git merge, git rebase, git pull을 사용하여 main 브랜치에서 다른 브랜치로 변경 사항을 가져오는 세 가지 다른 방법을 살펴보았습니다. 각 방법은 장단점과 사용 사례가 있습니다.

작가: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn

관련 문장 - Git Pull