관리자 워크플로 #

이 페이지는 우리 자신이나 다른 사람들의 변경 사항을 업스트림 저장소에 병합하는 유지 관리자를 위한 것입니다.

관리자로서 개발 워크플로 의 기본 사항을 완전히 숙지하고 있습니다.

리포지토리를 업스트림 리포지토리에 연결 의 지침 은 업스트림 리포지토리에 대한 읽기 전용 액세스 권한이 있는 원격을 추가합니다. 관리자는 읽기-쓰기 액세스 권한이 있습니다.

읽기-쓰기 리모컨임을 상기시키기 위해 업스트림 리모컨에 무서운 이름을 지정하는 것이 좋습니다.

git remote add upstream-rw [email protected]:matplotlib/matplotlib.git
git fetch upstream-rw

변경 사항 통합 #

트렁크( )에 들어가야 하는 몇 가지 변경 사항이 있다고 가정해 보겠습니다 upstream-rw/main.

변경 사항은 현재 있는 일부 분기에 있습니다. 예를 들어 다음과 같이 누군가의 변경 사항을 보고 있습니다.

git remote add someone https://github.com/someone/matplotlib.git
git fetch someone
git branch cool-feature --track someone/cool-feature
git checkout cool-feature

이제 업스트림에 통합할 변경 사항이 있는 분기에 있습니다. 이 섹션의 나머지 부분에서는 사용자가 이 분기에 있다고 가정합니다.

몇 가지 커밋 #

커밋이 몇 개만 있는 경우 업스트림으로 리베이스하는 것을 고려하십시오.

# Fetch upstream changes
git fetch upstream-rw
# rebase
git rebase upstream-rw/main

리베이스를 수행하고 푸시하는 경우 github가 이미 병합된 변경 사항을 감지할 수 없기 때문에 github pull 요청을 수동으로 닫아야 합니다.

긴 일련의 커밋 #

더 긴 일련의 관련 커밋이 있는 경우 대신 병합을 고려하십시오.

git fetch upstream-rw
git merge --no-ff upstream-rw/main

병합은 github에서 감지되며 관련 풀 요청을 자동으로 닫아야 합니다.

위 사항에 유의하십시오 --no-ff. 이렇게 하면 git이 빨리 감기를 수행하는 대신 병합 커밋을 수행하여 이러한 커밋 집합이 트렁크에서 분기된 다음 병합을 통해 기본 기록에 다시 합류하도록 합니다. 트렁크 위에 직접 만들어진 것처럼 보이지 않습니다.

히스토리 확인 #

이제 두 경우 모두 히스토리가 합리적이고 올바른 커밋이 있는지 확인해야 합니다.

git log --oneline --graph
git log -p upstream-rw/main..

위의 첫 번째 줄은 히스토리 그래프의 텍스트 표현과 함께 간결한 방식으로 히스토리를 보여줍니다. 두 번째 줄은 트렁크( )에서 도달할 수 있는 커밋을 제외하고 upstream-rw/main현재 HEAD( .. 끝에 로 암시됨)에서 도달할 수 있는 커밋을 포함하여 커밋 로그를 보여줍니다. 따라서 트렁크와 비교하여 이 분기에 고유한 커밋을 보여줍니다. 이 -p옵션은 이러한 커밋에 대한 diff를 패치 형식으로 표시합니다.

트렁크 번호 로 푸시

git push upstream-rw my-new-feature:main

my-new-feature이렇게 하면 이 리포지토리의 main 분기가 리포지토리 의 분기로 푸시 upstream-rw됩니다.