source

원격 분기로 로컬 분기 덮어쓰기

manysource 2023. 10. 17. 20:23

원격 분기로 로컬 분기 덮어쓰기

지역 지사를 완전히 망쳤으니 다시 시작하고 싶습니다.서버의 버전이 정확합니다.

처음부터 다시 시작하고 싶지 않아요. 저는 제 지역의 역사를 이용해서 제 큰 실수를 고치고 싶습니다. (필요하다면 할 수 있습니다.)

git fetch branchname,그리고.git pull branchname일을 하지 마.메시지는 "최신"이지만, 로컬 버전이 서버 버전과 일치하지 않습니다.

git pull origin/branchname찾을 수 없음 오류가 발생합니다.

먼저 현재 위치에 새 분기를 만듭니다(이전의 'screwed 업' 기록이 필요한 경우).

git branch fubar-pin

원격 분기 목록을 업데이트하고 새 커밋을 동기화합니다.

git fetch --all

그런 다음 분기를 원점/branch가 가리키는 지점으로 재설정합니다.

git reset --hard origin/branch

주의하십시오. 이렇게 하면 작업 트리에서 변경 사항이 제거됩니다.

로컬 지점을 망쳤을 때 수행하는 작업은 부서진 지점의 이름을 변경하고 업스트림 지점을 다시 체크아웃/브랜치하는 것입니다.

git branch -m branch branch-old
git fetch remote
git checkout -b branch remote/branch

그런 다음 이전 분기에서 아무것도 원하지 않으면 제거합니다.

git branch -D branch-old

하지만 저는 보통 오래된 지점을 근처에 두고 갑니다. 혹시라도 그곳에 뭔가가 있을지도 모르니까요.

로컬 지점에 폐기할 수정 사항이 있을 수 있습니다.이 작업을 수행하기 위해서는 다음을 사용해야 합니다.git reset분기 헤드를 상류 레포의 분기점에서 마지막으로 분기한 지점으로 재설정합니다. 사용합니다.git branch -v상류 분기의 sha1 id를 찾고, 그것을 사용하여 분기를 재설정합니다.git reset SHA1ID. 그러면 당신은 할 수 있을 겁니다.git checkout디렉토리에 남겨둔 변경사항을 삭제합니다.

참고: 백업 레포에서는 항상 이 작업을 수행합니다.그렇게 하면 제대로 작동했다고 확신할 수 있습니다.그렇지 않은 경우 백업을 복구해야 합니다.

git reset --hard

이는 모든 로컬 변경 사항을 오리진 헤드로 되돌리기 위한 것입니다.

언급URL : https://stackoverflow.com/questions/6229764/overwriting-my-local-branch-with-remote-branch