Nice programing

원격 저장소로 푸시 된 Git의 특정 커밋을 실행 취소합니다.

nicepro 2020. 9. 29. 18:43
반응형

원격 저장소로 푸시 된 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- 후자는 그것을 실종 지점에 패치를 적용하여이 지점에서 이전 삭제합니다을.


나는 자동 커밋이 마음에 들지 않으므로 git revert일부에게는 도움이 될 수 있습니다.

자동 커밋이 아닌 수정 된 파일 만 원하는 경우 다음 을 사용할 수 있습니다.--no-commit

% git revert --no-commit <commit hash>

그것은 -n

% git revert -n <commit hash>

이미 푸시 되었기 때문에 히스토리를 직접 조작해서는 안됩니다. git revert커밋 히스토리를 조작하지 않도록 새 커밋을 사용하여 커밋에서 특정 변경 사항을 되돌립니다.

참고 URL : https://stackoverflow.com/questions/2318777/undo-a-particular-commit-in-git-thats-been-pushed-to-remote-repos

반응형