program story

깨끗한 풀 요청을 할 수 있도록 Github 포크를 어떻게 정리합니까?

inputbox 2020. 10. 8. 07:58
반응형

깨끗한 풀 요청을 할 수 있도록 Github 포크를 어떻게 정리합니까?


Github에서 저장소를 포크했습니다. 약간의 변경을하고 업스트림에 풀 요청을 제출했지만 포크가 너무 엉망이되어 깨끗한 풀 요청을 생성 할 수 없습니다. 6 개의 변경 사항이있는 브랜치에서 풀 요청을 시작하면 Github는 13 개를 제출하려고합니다. 그중 7 개는 이미 업스트림 (내치)이 존재합니다.

내 문제 는 최신 커밋을 가져 오는 것과 관련된 것 같지만 새 분기를 만들고 체리 선택 커밋을 만들 때 여전히 추가 항목이 있습니다. 나는 rebasing만났지만 이제는 내 마스터 조차도 너무 엉망이되어 upstream 의 깨끗한 사본을 생성 할 수 없습니다 . 병합하는 대신 리베이스가 필요하다는 것을 이해하지 못했기 때문에 분명히 실수를 저질렀습니다. 내가하려는 것은 매듭을 풀고 내가 유용하게 전진 할 수있는 깨끗한 상태로 돌아가는 방법을 알아내는 것입니다.

나는 내 포크를 날려 버리고 새로운 포크를 만들고 싶지만 그것도 모으는 것이 어렵습니다.

Git 죄를 고백 한 후 어떻게 github absolution을 얻나요?


1 단계 : 업스트림 변경 사항 가져 오기
저장소 분기 페이지 에 설명 된대로 업스트림 저장소를 "업스트림"으로 추가하는 것이 좋습니다 .

git pull --rebase upstream master

--rebase옵션은 병합없이 최신 커밋 위에 변경 사항을 배치합니다.

2 단계 : (선택 사항) 커밋을 하나의 커밋으로 병합

git reset --soft upstream/master

이 명령은 모든 커밋을 "실행 취소"하지만 파일을 변경하지는 않습니다. 따라서 단일 커밋으로 모든 변경 사항을 커밋 할 수 있습니다.

git commit -a

3 단계 : 변경 사항 확인 및 테스트

변경 사항을 표시하려면 내장 gitk, Sourcetree , TortoiseGit 또는 Tower (유료) 등과 같은 GUI를 사용하십시오 .

4 단계 : 푸시

git push푸시가 대상 저장소의 기록을 변경하기 때문에 오류가 발생합니다.
3 단계에 표시된 변경 사항이 정확하다고 확신하는 경우 "-f"를 눌러 누릅니다.

git push -f origin master


추가 정보
원격을 추가하는 명령은 다음과 같습니다.

git remote add upstream git://github.com/[username]/[project].git

직접 URL에서 가져올 수도 있습니다.

git pull --rebase  git://github.com/[username]/[project].git

그러나 다른 단계에서 "업스트림 / 마스터"대신 최신 업스트림 커밋의 해시가 필요합니다.


내가 이해하는 바와 같이, Git과 Mercurial (나는 후자 만 사용 했으므로 내가 틀렸을 수 있음)을 사용하면 포크를 날려 버리고 다시 포크하는 것은 큰 문제가 아닙니다. 저는 프로젝트에서 항상 그렇게합니다. 그렇게해도 괜찮다면 (변경 사항을 백업 할 수 있거나 포크에 큰 변경 사항이없는 경우) 아마 그 방법이 될 것입니다.

저장소를 분기하면 해당의 전체 복제 수, DVCS와 기억 전체의 repo . 현재 포크를 삭제 한 다음 원래 리포지토리를 다시 포크하면 작업 할 완전히 깨끗한 슬레이트를 갖게됩니다.


개인 저장소에서 forkee의 저장소를 원격으로 추가하십시오. 리모트 브랜치에서 브랜치를 리베이스 / 리셋합니다. github 저장소에 강제 푸시를 수행하십시오.

정확한 명령이 필요하면 알려주세요. 또한 로컬 커밋을 시도하고 보존 할 것인지 아니면 "블로잉 어웨이"가 괜찮은지 알려주십시오.

참고 URL : https://stackoverflow.com/questions/6102297/how-do-i-clean-up-my-github-fork-so-i-can-make-clean-pull-requests

반응형