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
이러한 모든 답변은 서로 다른 방법을 제안하지만, 다른 가정에 따라 가능한 고장 모드가 다릅니다.
제가 항상 하는 일은
- 로컬 리포지토리 삭제
- 새 복사본 복제
이것은 항상 작동하며 미래에 충돌을 일으킬 수 있는 혼란이 남아 있지 않습니다.이것은 간단하고 효과적이며 모호한 상황에서 오류를 발생시키지 않습니다.
언급URL : https://stackoverflow.com/questions/13781388/git-discard-all-changes-and-pull-from-upstream
'programing' 카테고리의 다른 글
| Firestore null이 아닌 곳을 선택합니다. (0) | 2023.07.11 |
|---|---|
| 스프링 부트에 사용자 지정 변환기를 등록하는 방법은 무엇입니까? (0) | 2023.07.06 |
| C에서 문자열을 2개의 문자열로 분할하는 방법 (0) | 2023.07.06 |
| 새 시간 초과 속성이 통과할 때 카운트다운 타이머가 표시되지 않습니다.어떻게 고칠까요? (0) | 2023.07.06 |
| FCM 등록 ID 토큰의 최대 길이는 얼마입니까? (0) | 2023.07.06 |