개발관련/Git

원격 저장소로 푸시 된 Git에서 특정 커밋을 실행 취소 하는 방법

Rateye 2021. 8. 4. 11:02
728x90
반응형
질문 : 원격 저장소로 푸시 된 Git에서 특정 커밋을 실행 취소합니다.

다음과 같은 특정 커밋을 실행 취소하는 가장 간단한 방법은 무엇입니까?

  • 머리 또는 HEAD에
  • 리모컨으로 밀렸습니다.

최신 커밋이 아니라면

git reset HEAD

작동하지 않습니다. 리모컨으로 푸시 되었기 때문에

git rebase -i

git rebase --onto

리모컨에 문제가 발생할 수 있습니다.

더구나 저는 역사를 정말로 수정하고 싶지 않습니다. 잘못된 코드가 있으면 역사에 있었으며 볼 수 있습니다. 나는 작업 복사본에서 그것을 원하고 역 병합 커밋을 신경 쓰지 않습니다.

즉, 다음 svn 명령에 해당 하는 Git 은 무엇입니까?

svn merge -r 303:295 http://svn.example.com/repos/calc/trunk

새 커밋으로 해당 개정의 모든 변경 사항을 역 병합하여 295에서 302로 모든 변경 사항을 제거합니다.

svn merge -c -302 ^/trunk

물론 해당 커밋의 변경 사항을 역으로 병합하는 또 다른 커밋을 추가하여 302 커밋을 취소합니다.

나는 이것이 Git에서 상당히 간단한 작업이고 상당히 일반적인 사용 사례라고 생각했습니다. 원자 적 커밋의 다른 점은 무엇입니까?

우리는 스테이징 스 태싱 과 커밋이 완벽하게 원 자성을 보장하기 위해 모든 것을 가지고 있습니다. 하나 이상의 원자 커밋을 쉽게 취소 할 수 있어야하지 않습니까?

답변

git log 를 사용하여 커밋의 해시를 식별 한 git revert <commit> 을 사용하여 이러한 변경 사항을 제거하는 새 커밋을 만듭니다. 어떤 의미에서 git revert git cherry-pick 의 반대입니다. 후자는 패치가 누락 된 브랜치에 패치를 적용하고 전자는 패치가있는 브랜치에서 패치를 제거합니다.

출처 : https://stackoverflow.com/questions/2318777/undo-a-particular-commit-in-git-thats-been-pushed-to-remote-repos
728x90
반응형