programing

git 모든 변경 사항을 취소하고 업스트림에서 끌어옵니다.

telebox 2023. 7. 6. 22:09
반응형

git 모든 변경 사항을 취소하고 업스트림에서 끌어옵니다.

업스트림 repo를 가져오고 마스터를 교체하려면 어떻게 해야 합니까?제 레포에는 마스터인 브랜치가 하나밖에 없습니다. 완전히 망쳤기 때문에 기본적으로 상류에서 다시 시작해야 합니다.그것이 그 일을 해낼 것이라고 생각합니다만, 더 쉬운 방법은 없을까요?

여기서 수행할 수 있는 작업은 두 가지 이상입니다. 즉, 원격 레포를 복제하거나reset --hard공통 조상으로 이동한 다음 풀을 수행합니다. 이 풀은 원격 마스터에 대한 최신 커밋으로 빠르게 전달됩니다.

구체적으로 말하면, 네빅 레넬의 원래 대답의 간단한 확장은 다음과 같습니다.

git reset --hard origin/master
git pull origin master

참고: 사용git reset --hard커밋되지 않은 변경 사항은 모두 무시되며, 새로 git을 시작하는 경우에는 이 명령과 혼동하기 쉬우므로 계속하기 전에 이 명령이 수행할 작업을 파악해야 합니다.

지점 마스터에 있는 동안:git reset --hard origin/master

그럼 청소 좀 해주세요.git gc(이것에 대한 자세한 내용은 man 페이지에 있습니다)

업데이트: 다음 작업도 수행해야 합니다.git fetch origin(또는)git fetch origin master해당 분기만 원하는 경우). 재설정 전 또는 후에 이 작업을 수행하는 것은 중요하지 않습니다. (고맙습니다 @eric-walker)

단일 명령으로 이 작업을 수행할 수 있습니다.

git fetch --all && git reset --hard origin/master

주의:

1 경고 모든 로컬 변경 내용이 손실됩니다.

2와 다른 분기를 원하는 경우master다음을 사용해야 합니다.

git fetch --all && git reset --hard origin/[BRANCH]

3 명령어 쌍으로 분할할 수 있습니다.

git fetch --all
git reset --hard origin/master

이제서야 깨달았어요. 대신에

git fetch --all && git reset --hard origin/master

그럴 것 같네요.

git fetch --all && git reset --hard origin/<branch_name>

대신(다른 지점에서 작업하는 경우)

git reset <hash>  # you need to know the last good hash, so you can remove all your local commits

git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f

voila, 이제 당신의 포크는 상류로 돌아왔습니다.

최신 버전의 git에서는 이것이 가장 쉬운 방법일 수 있습니다.

git restore * && git pull

이러한 모든 답변은 서로 다른 방법을 제안하지만, 다른 가정에 따라 가능한 고장 모드가 다릅니다.

제가 항상 하는 일은

  1. 로컬 리포지토리 삭제
  2. 새 복사본 복제

이것은 항상 작동하며 미래에 충돌을 일으킬 수 있는 혼란이 남아 있지 않습니다.이것은 간단하고 효과적이며 모호한 상황에서 오류를 발생시키지 않습니다.

언급URL : https://stackoverflow.com/questions/13781388/git-discard-all-changes-and-pull-from-upstream

반응형