코드 검토 후 꺼내기 요청 업데이트를 위한 기본 Github 워크플로우
저는 Github의 오픈 소스 프로젝트에 대한 변경 사항을 제출했고, 핵심 팀원 중 한 명으로부터 코드 검토 의견을 받았습니다.
리뷰 코멘트를 고려하여 코드를 업데이트하여 다시 제출하고자 합니다.이를 위한 가장 좋은 워크플로우는 무엇입니까?git/github에 대한 저의 제한된 지식으로 인해 다음 중 하나를 수행할 수 있었습니다.
코드를 새 커밋으로 업데이트하고 초기 커밋과 업데이트된 커밋을 모두 내 꺼내기 요청에 추가합니다.
어떻게든 (??) 저장소에서 이전 커밋을 롤백하고 모든 것을 포함하는 단일 새 커밋을 만든 다음, 이에 대한 꺼내기 요청을 제기하시겠습니까?
git commit
수정 기능이 있지만, 로컬 저장소 밖으로 커밋을 푸시한 후에는 사용하면 안 된다고 들었습니다.이 경우에는 로컬 PC에서 변경하여 프로젝트의 github 지점으로 이동했습니다.'수정'을 사용해도 괜찮습니까?다른 거?
옵션 2/3이 좋을 것 같습니다. 오픈 소스 프로젝트는 모든 것을 구현할 수 있는 하나의 약속만 가지고 있기 때문입니다. 하지만 어떻게 해야 할지 모르겠습니다.
참고: 이것이 답변에 영향을 미치는지 여부는 모르겠지만, 저는 별도의 분기에서 변경한 것이 아니라 마스터 위에서 커밋을 수행했습니다.
꺼내기 요청을 업데이트하려면 다음과 같이 하십시오.
풀 요청(포인트 #1)을 업데이트하려면 풀 요청이 있는 동일한 분기를 체크아웃하고 다시 풀 요청에 푸시하면 됩니다.
cd /my/fork
git checkout master
...
git commit -va -m "Correcting for PR comments"
git push
선택 사항 - 커밋 기록 정리
저장소 기록이 깨끗해지도록 커밋을 함께 스쿼시하도록 요청받거나, 꺼내기 요청(포인트 #2)의 "메시지"에서 주의를 분산시키는 중간 커밋을 제거해야 할 수 있습니다.예를 들어 커밋 기록이 다음과 같은 경우:
$ git remote add parent git@github.com:other-user/project.git
$ git fetch parent
$ git log --oneline parent/master..master
e4e32b8 add test case as per PR comments
eccaa56 code standard fixes as per PR comments
fb30112 correct typos and fatal error
58ae094 fixing problem
하나의 커밋으로 표시되도록 여러 항목을 함께 뭉치는 것이 좋습니다.
$ git rebase -i parent/master
꺼내기 요청의 기록을 다시 쓰는 방법을 선택하라는 메시지가 표시됩니다. 편집기에 다음 내용이 표시됩니다.
pick 58ae094 fixing actual problem
pick fb30112 correct typos
pick eccaa56 code standard fixes
pick e4e32b8 add test case as per PR comments
이전 커밋에 포함할 커밋 - 선택을 스쿼시로 변경:
pick 58ae094 fixing actual problem
squash fb30112 correct typos
squash eccaa56 code standard fixes
squash e4e32b8 add test case as per PR comments
편집기를 닫습니다.그런 다음 Git는 기록을 다시 쓰고 하나의 결합된 커밋에 대한 커밋 메시지를 제공하라는 메시지를 표시합니다.그에 따라 수정하면 커밋 기록이 간결해집니다.
$ git log --oneline parent/master..master
9de3202 fixing actual problem
그것을 포크에 밀어 넣습니다.
$ git push -f
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (11/11), 978 bytes, done.
Total 11 (delta 9), reused 7 (delta 6)
To git@github.com:me/my-fork.git
f1238d0..9de3202 HEAD -> master
꺼내기 요청에는 이전에 여러 커밋으로 분할된 모든 변경 사항을 통합한 단일 커밋이 포함됩니다.
공용 저장소에서 기록을 변경하는 것은 나쁜 일입니다.
및 사용하기git push -f
잠재적으로 다른 사용자가 이미 복제한 분기는 좋지 않습니다. 저장소의 기록과 체크아웃 기록이 서로 다르게 됩니다.
그러나 저장소에 통합할 것을 제안하는 변경 사항을 수정하기 위해 포크의 기록을 수정하는 것은 좋은 일입니다.따라서 풀 요청에서 "소음"을 제거하는 예약은 없습니다.
나뭇가지 위의 메모
위에서 나는 당김 요청을 다음에서 온 것으로 표시합니다.master
포크의 분기에는 문제가 없지만 표준 기술인 경우 저장소당 하나의 PR만 열 수 있는 등의 특정 제한이 발생합니다.제안하고자 하는 각 변경 사항에 대해 분기를 생성하는 것이 더 좋습니다.
$ git branch feature/new-widgets
$ git checkout feature/new-widgets
...
Hack hack hack
...
$ git push
# Now create PR from feature/new-widgets
끌어오기 요청에 사용된 분기에 새 커밋을 추가하고 GitHub에 분기를 푸시하기만 하면 됩니다.꺼내기 요청은 추가 커밋으로 자동 업데이트됩니다.
2번과 3번은 불필요합니다.만약 (커밋이 ), 은 사추아분병닌기다위있보를 할 수 .git log --first-parent
로그에서 병합 커밋만 봅니다.
언급URL : https://stackoverflow.com/questions/7947322/preferred-github-workflow-for-updating-a-pull-request-after-code-review
'code' 카테고리의 다른 글
카르마-재스민 유닛 테스트 사례를 작성하는 동안 "오류: 라우터 공급자 없음" (0) | 2023.05.13 |
---|---|
사용자 존재 여부 확인 (0) | 2023.05.13 |
여권 직렬화 역직렬화 이해 (0) | 2023.05.13 |
bash 스크립트에서 여러 프로그램을 병렬로 실행하려면 어떻게 해야 합니까? (0) | 2023.05.13 |
패키지의 각 종속성을 업데이트하는 방법.최신 버전의 json? (0) | 2023.05.13 |