code

갈래 저장소에서 git master 브랜치를 업스트림 브랜치로 재설정하려면 어떻게해야합니까?

codestyles 2020. 11. 11. 20:12
반응형

갈래 저장소에서 git master 브랜치를 업스트림 브랜치로 재설정하려면 어떻게해야합니까?


분기 된 자식 저장소의 마스터 브랜치를 완전히 엉망으로 만들었습니다.

업스트림 마스터 리포지토리의 내용으로 포크로 푸시 된 마스터 브랜치를 완전히 재설정하고 싶습니다. 마스터 브랜치 변경 사항이나 기록을 유지하는 데 관심이 없습니다.

가장 간단한 방법은 내 분기 된 저장소를 삭제하고 업스트림 프로젝트에서 다시 분기하는 것입니다. 그러나 나는 잃고 싶지 않은 다른 푸시 브랜치에서 일하고 있습니다.

따라서 업스트림 마스터로 푸시 된 마스터 브랜치를 재설정하는 방법은 무엇입니까?


git clone https://myrepo.git
cd myrepo
git remote add upstream https://upstream.git
git fetch upstream

업스트림 마스터로 로컬 및 원격 마스터 분기를 재설정하려면 여기에서 어디로 가야합니까?


로컬 마스터 브랜치를 업스트림 버전으로 재설정하고 리포지토리로 푸시 할 수 있습니다.

"upstream"이 원래 저장소이고 "origin"이 포크라고 가정합니다.

# ensures current branch is master
git checkout master

# pulls all new commits made to upstream/master
git pull upstream master

# this will delete all your local changes to master
git reset --hard upstream/master

# take care, this will delete all your changes on your forked master
git push origin master --force

(원래 저장소를를 사용하여 "업스트림"으로 정의 할 수 있습니다 git remote add upstream /url/to/original/repo.)


이것은 업스트림 마스터로 마스터 분기를 재설정하고 분기 이후 분기가 업데이트 된 경우 해당 변경 사항도 가져옵니다.

git checkout master 
git reset upstream/master
git pull --rebase upstream master
git push origin master --force

추신 : Upstream은 원본 저장소이고 원본은 복사본이라고 가정합니다.


다음과 같은 방법을 시도했습니다.

$REPO=<repo>
$ORIGIN=<user>/$REPO
$UPSTREAM=<upstream>/$REPO

$ git clone git@github.com:$ORIGIN.git
$ cd $REPO
$ git checkout master
$ git remote add upstream git@github.com:$UPSTREAM.git
$ git reset --hard upstream/master
$ git pull --rebase upstream master
$ git push origin master --force

출력에 경고가 표시됩니다.

fatal: ambiguous argument 'upstream/master': 
unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

올바른 방법이 넣어 그래서 git pull전에 git reset:

$ git clone git@github.com:$ORIGIN.git
$ cd $REPO
$ git checkout master
$ git remote add upstream git@github.com:$UPSTREAM.git
$ git pull --rebase upstream master
$ git reset --hard upstream/master
$ git push origin master --force

그러면 출력은 다음과 같습니다.

From github.com:<upstream>/<repo>
 * branch                master     -> FETCH_HEAD
 * [new branch]          master     -> upstream/master
HEAD is now at 7a94b1790 Merge pull request #4237 from <upstream>/...
Current branch master is up to date.
Everything up-to-date.

참고 URL : https://stackoverflow.com/questions/42332769/how-do-i-reset-the-git-master-branch-to-the-upstream-branch-in-a-forked-reposito

반응형