포크를 정리하고 업스트림에서 다시 시작합니다.
저장소를 포크한 다음 몇 가지 변경을 가했는데 모든 것을 망친 것 같습니다.
현재 업스트림/마스터를 기반으로 처음부터 다시 시작하고 싶습니다.
리포지토리의 기본을 변경해야 합니까 아니면 삭제해야 합니까?
장가간해같다다습니과음은결책한단▁'가다같'를 사용하는 입니다.upstream
원래 보고서를 참조하는 원격 이름):
git remote add upstream /url/to/original/repo
git fetch upstream
git checkout master
git reset --hard upstream/master
git push origin master --force
(이 GitHub 페이지와 유사하게, "상황이 좋지 않을 경우 어떻게 해야 합니까?")
분기에서 수행된 변경사항(로컬에서 모두)이 손실될 수 있음을 유의하십시오.reset --hard
그리고 먼 쪽에서는, 그것 때문에.push --force
).
커밋을 유지하려면 다른 방법을 사용할 수 있습니다.master
그 커밋들을 현재 상황에서 재생합니다.upstream/master
.
재설정 부품을 다음으로 교체합니다.git rebase upstream/master
그러면 강제로 눌러야 합니다.
또한 "상황이 좋지 않은 경우 어떻게 해야 합니까?"를 참조하십시오.
보다 완벽한 솔루션인 현재 작업 백업(경우에 따라)은 "Cleanupgit master 브랜치 및 일부 커밋을 새 브랜치로 이동"에 자세히 나와 있습니다.
또한 "원래 GitHub 저장소에서 분기된 GitHub 저장소로 새 업데이트 가져오기"를 참조하십시오.upstream
사실은.
참고: 최근 GitHub 저장소는 지점을 보호합니다.push --force
.
은 그래서신당은해제합니다야해호를보.master
먼저(아래 그림 참조), 강제 종료 후 다시 보호합니다.
참고: 특히 GitHub에는 업스트림에 병합된 풀 요청에 대한 분기된 저장소를 삭제할 수 있는 바로 가기가 현재(2019년 2월) 있습니다.
VonC의 답변을 사랑합니다.여기 초보자들을 위한 쉬운 버전이 있습니다.
라고 불리는 깃 리모콘이 있습니다.origin
다들 알고 계실 겁니다기본적으로 Git repo에 원하는 만큼의 원격을 추가할 수 있습니다.그래서, 우리가 할 수 있는 것은 새로운 리모컨을 도입하는 것입니다. 그것은 포크가 아닌 원래의 레포입니다.나는 그것을 부르는 것을 좋아합니다.original
원격으로 포크에 원본 레포를 추가해 보겠습니다.
git remote add original https://git-repo/original/original.git
이제 원본 레포를 가져와서 최신 코드가 있는지 확인해 보겠습니다.
git fetch original
VonC가 제안했듯이, 우리가 마스터 위에 있는지 확인하십시오.
git checkout master
이제 원본 repo의 최신 코드로 포크의 속도를 높이기 위해 원본 리모컨에 따라 마스터 브랜치를 하드 리셋하기만 하면 됩니다.
git reset --hard original/master
그리고 당신은 끝났습니다 :)
@VonC에 이은 멋진 답변.GitHub 회사 정책에 따라 마스터에서 '강제 푸시'가 허용되지 않을 수 있습니다.
remote: error: GH003: Sorry, force-pushing to master is not allowed.
이와 같은 오류 메시지가 표시되면 다음 단계를 수행하십시오.
포크를 효과적으로 재설정하려면 다음 단계를 수행해야 합니다.
git checkout master
git reset --hard upstream/master
git checkout -b tmp_master
git push origin
GitHub에서 "설정 -> 분기 -> 기본 분기"에서 새 기본 분기로 'new_master'를 선택합니다.이제 'master' 분기를 강제로 누를 수 있습니다.
git checkout master
git push --force origin
그런 다음 GitHub 설정에서 'master'를 기본 분기로 설정해야 합니다.'tmp_master' 삭제하기
git push origin --delete tmp_master
git branch -D tmp_master
거스름돈 분실에 대한 다른 경고는 여전히 적용됩니다. 주의하십시오.
소스 트리 GUI를 통해 100% 수행하는 방법
(모든 사람이 git 명령줄 인터페이스를 통해 작업하는 것을 좋아하는 것은 아닙니다.)
설정이 완료된 후에는 7-13단계만 수행하면 됩니다.
Fetch > checkout master branch > master로 리셋 > push changes to server
스텝
- 화면 상단의 메뉴 도구 모음에서: "리포지토리" > "리포지토리 설정"
- "추가"
- GitHub으로 돌아가서 복제 URL을 복사합니다.
- URL을 "URL / 경로" 필드에 붙여넣은 다음 해당 이름을 지정합니다.저는 그것을 "마스터"라고 불렀습니다.기본 원격 확인란을 선택하지 않습니다.이 리포지토리에 직접 푸시할 수 없습니다.
- 확인을 누르면 리포지토리 목록에 나타납니다.
- 다시 "확인"을 누르면 "원격" 목록에 표시됩니다.
- "Fetch" 버튼(소스 트리 헤더 영역 왼쪽 상단)을 클릭합니다.
- "Fetch from all remote" 확인란이 선택되어 있는지 확인하고 "ok"를 누릅니다.
아직 체크아웃하지 않은 경우 "마스터" 분기를 두 번 클릭하여 체크아웃합니다.
재설정할 커밋을 찾습니다. repo를 "master"라고 부른 경우 "master/master" 태그가 있는 커밋을 찾을 가능성이 높습니다.
커밋 > "현재 분기를 이 커밋으로 재설정"을 마우스 오른쪽 버튼으로 클릭합니다.
대화상자에서 "사용 모드:" 필드를 "하드 - 모든 작업 복사본 변경사항 삭제"로 설정한 후 "확인"을 누릅니다. 손실하지 않을 변경사항은 먼저 별도의 분기에 저장하십시오.
- 변경사항을 보고서 사본에 업로드하려면 "Push" 버튼(소스 트리 헤더 영역 왼쪽 상단)을 클릭합니다.
완료!
VonC의 대답은 다음과 같습니다.
마스터 분기에서 수행된 변경사항은 로컬에서 재설정 --하드로 인해 손실될 수 있으며, 원격에서는 푸시 --포스로 인해 손실될 수 있습니다.
따라서 기존 포크에서 새로운 분기를 생성하여 이 분기를 추적하는 방법에 대해서만 설명하겠습니다.main
원래 분기된 레포의 분기.
이것이 중요한 이유:동일한 포크와 다른 기능에 대해 다른 풀 요청이 이미 제출되어 있다고 가정합니다.아니면 다른 누군가가 당신의 포크에서 포크를 가져갔을 수도 있습니다.그러면 하드 리셋이 좋지 않습니다.
원격에서 분기된 를 호출한다고 가정합니다.upstream
.
git fetch upstream main
git switch -c upstreamb/main/track upstream/main
당신은 새로운 지점에 있게 될 것입니다.upstreamb/main/track
% git branch
...
* upstreamb/main/track
% git pull upstream main
From github.com:XXXX/YYYY
* branch main -> FETCH_HEAD
Already up to date.
주의:/
분기 이름에서 사용할 수 있습니다.혼란과 모호함을 피하기 위해 추가했습니다.b
로컬 분기임을 나타내기 위해 업스트림으로 이동합니다.
이제 트랙에서 새 피쳐 분기를 작성하고 다음을 사용할 수 있습니다.git difftool
또는 필요한 경우 폐기된 작업에서 선택적으로 비교하고 복사할 수 있는 모든 것.
언급URL : https://stackoverflow.com/questions/9646167/clean-up-a-fork-and-restart-it-from-the-upstream
'programing' 카테고리의 다른 글
Angular with Angular CLI의 특정 버전을 설치하는 방법은 무엇입니까? (0) | 2023.05.01 |
---|---|
git diff'는 라인 번호와 변경된 파일 이름만 표시할 수 있습니까? (0) | 2023.05.01 |
Python을 찾을 수 없습니다. 인수 없이 실행하여 Microsoft Store에서 설치하거나 설정에서 이 바로 가기를 사용하지 않도록 설정합니다. (0) | 2023.05.01 |
UITableViewCell 사이에 간격을 추가하는 방법 (0) | 2023.05.01 |
상속된 구성원 숨기기 (0) | 2023.05.01 |