포크를 동기화할 때 병합 커밋을 피하는 방법
오픈 소스 프로젝트에서 작업할 때마다 일반적으로 원본 코드베이스의 복사본(a fork )을 유지합니다. 변경 사항을 제안하려면 Pull Request (PR)을 엽니다. PR을 생성한 후 검토 프로세스 중에 원본 코드베이스에 대한 커밋이 생성되어 포크를 동기화해야 할 가능성이 있습니다.
포크를 원본 코드베이스와 동기화하려면 이상적으로 Git 호스팅 서비스에서 제공하는 웹 UI를 사용하거나 이 Github tutorial에 표시된 대로 터미널에서
git fetch
및 git merge
를 실행합니다. 그러나 PR이 열린 상태에서 그런 식으로 포크를 동기화하면 원치 않는 병합 커밋이 PR에 도입됩니다.이 기사에서는 병합 커밋이 무엇인지, 포크를 원본 코드베이스와 동기화할 때 병합 커밋을 피하는 방법
git rebase
에 대해 알아봅니다.병합 커밋이란 무엇입니까?
병합 커밋은 다른 커밋과 마찬가지로 특정 시점의 리포지토리 상태와 진화한 기록입니다. 그러나 병합 커밋에는 고유한 한 가지 사항이 있습니다. 최소 두 개의 부모 커밋이 있다는 것입니다.
병합 커밋을 생성하면 Git은 두 개의 별도 커밋의 기록을 자동으로 병합합니다. 이 병합 커밋은 충돌을 일으키고 병합된 PR에 있는 경우 프로젝트의 Git 기록을 엉망으로 만들 수 있습니다.
위 이미지의 주석 섹션은 두 개의 상위 커밋의 병합 커밋을 보여줍니다. 다음은 이미지에 대한 link to the merge commit입니다.
이제 병합 커밋이 무엇인지 알았습니다. 다음으로 포크를 원본 코드베이스와 동기화할 때 이를 피하는 방법을 배웁니다.
Git에서 포크를 동기화할 때 병합 커밋을 방지하는 방법.
**
병합 커밋을 방지하려면 아래 단계에 따라 원격 포크로 푸시하기 전에 로컬 포크의 원래 원격 코드베이스에서 변경 사항을 적용해야 합니다rebase.
1 단계:
아래 명령을 사용하여 코드베이스에서 변경 사항을 추적하고 가져오기 위해 원본 원격 리포지토리와 링크를 만듭니다.
$ git remote add upstream https://github.com/com/original/original.git
위의 명령을 실행하면 이제 두 개의 리모컨이 생깁니다. 하나는 포크용이고 다른 하나는 원래 코드베이스용입니다.
$ git remote -v
를 실행하면 다음이 표시됩니다.origin https://github.com/your_username/your_fork.git (fetch)
origin https://github.com/your_username/your_fork.git (push)
upstream https://github.com/original/original.git (fetch)
upstream https://github.com/original/original.git (push)
위에서
upstream
는 포크를 생성한 원본 리포지토리를 나타냅니다.2 단계:
이 단계에서는 다음을 사용하여 원격 업스트림의 모든 분기를 가져옵니다.
$ git fetch upstream
3단계:
다음으로
git rebase
를 사용하여 포크의 마스터를 업스트림의 마스터로 다시 작성합니다.$ git rebase upstream/master
4단계:
그런 다음 마지막으로 업데이트를 원격 포크로 푸시합니다. "
--force
"를 사용하여 강제로 밀어야 할 수도 있습니다.$ git push origin master --force
메모:
git fetch
+ git pull
인 git fetch
를 사용하여 git merge
단계를 건너뛸 수 있지만 --
rebase
플래그를 사용하여 git merge
를 무시할 수 있습니다. 끌어오기 명령은 다음과 같습니다.$ git pull --rebase upstream master
결론
이 문서에서는 병합 커밋에 대해 알아보고
git rebase
를 사용하여 Git에서 포크를 동기화할 때 커밋을 방지하는 방법을 배웠습니다. 더 많은 정보를 얻을 수 있습니다git rebase
. 자세히 알아보려면 다음 리소스를 확인하세요.Reference
이 문제에 관하여(포크를 동기화할 때 병합 커밋을 피하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/everythingdevops/how-to-avoid-merge-commits-when-syncing-a-fork-3b6f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)