롤백된 이전 버전의 코드와 변경된 파일을 github의 메인 브랜치에 제출하는 방법
巴扎黑
巴扎黑 2017-06-16 09:19:00
0
2
1190

말하고자 하는 내용이 명확하지 않을 수도 있지만, 코드를 작성하다 보니 더 이상 하고 싶지 않아서 git reset --hard <版本号>를 사용하여 이전 버전으로 돌아가서 다시 작성했습니다. 글을 쓰다보니 원격창고에 제출하려고 했더니 오류가 뜹니다

으아악

제 버전이 이전 버전이라 병합해서 제출해야 한다고 하더군요. 여러 번 시도했는데 이해가 안 되네요.

巴扎黑
巴扎黑

모든 응답(2)
黄舟

먼저 귀하의 설명에 따르면 git reset --hard,那就可以推断出你已经 addcommit 过了。
其次,根据报错,可以推断出你已经 push를 사용했기 때문에 (이 추론은 귀하만이 마스터 브랜치의 변경 권한을 가지고 있다는 사실에 근거합니다.

그런 다음 git reset --hard을 실행하면 기록 기록을 원격 기록과 직접 병합할 수 없습니다. 그렇기 때문에 이런 오류가 발생하는 것입니다.

예를 들어 리모컨은 A -> B -> C -> D,你 git reset --hard 之后是 A -> B。这时候除非远程那边抹掉 CD이고

뒤에는 A -> B가 옵니다. 이때, 원격측에서 CD를 지우지 않으면 병합할 수 없습니다.

git push origin master --force따라서 이때는 를 이용하여 원격녹화를 강제로 덮어써야 합니다.

git pull。否则,你的本地又会变成 A -> B -> C -> D。因为 git pull 相当于 git fetch + git merge설명서대로 사용하지 마세요


A -> B -> C -> D (다음 내용은 위 예시를 바탕으로 한 것이며, 리모콘은

이고 B상태로 롤백하고 싶습니다)

git revert。其实,git reset --hardgit revertgit revert가 위에서 언급되었습니다. 실제로

git revert 모두 "롤백 코드"를 달성할 수 있습니다. 하지만 차이점은 다음과 같습니다.

git revert 会把你的本地变成 A -> B -> C -> D -> E。其中,E 干的事儿是删除 CD。这样做的好处在于,你 git push origin master 就不会有上面的报错了。但,历史线上还是会保留 CD 这两个 commit。如果使用这个命令,记得要 add 然后 commit

.

git reset --hard 会直接删掉 CD,形成 A -> B 这样的结果。好处在于更直接更彻底。缺点在于,首先要通过 git push origin master --force 去强行更改。其次,一旦你后悔了,除非根据本地的 reflog

CD를 직접 삭제하여 A -> B와 같은 결과를 생성합니다. 장점은 더 직접적이고 철저하다는 것입니다. 단점은 먼저

를 통해 변경을 강제해야 한다는 것입니다. 둘째, 일단 후회하고 나면 로컬 reflog에 따라 HEAD 포인터를 직접 복원하지 않는 이상 다른 방법이 없습니다.

어떤 것을 사용하든 필요에 따라 선택하세요. 🎜🎜
漂亮男人

일반적으로 이런 상황은 피하도록 노력하세요.

원격 마스터에 대한 권한이 있는 경우 다음을 수행할 수 있습니다.

으아악

보다 합리적인 접근 방식은 git revert를 사용하는 것입니다


분할선 편집

또 다른 학생 @S1ngS1ng이 더 자세한 답변을 했지만, 그는 어떤 것이든 사용할 수 있다는 점을 지적했습니다. 여전히 git revert가 더 적절한 접근 방식이라는 점을 다시 강조하고 싶습니다

다인원 개발 시나리오의 경우 원격 마스터의 다른 사람이 최신 코드를 가져왔거나 다른 브랜치에 병합했을 가능성이 높습니다. 이 경우 상대방이 여전히 푸시할 수 있으므로 재설정이 유효하지 않습니다. 커밋

을 삭제하고 싶습니다.

그래서 아무거나 사용할 수 있다는 생각에는 실제로 한계가 있습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿