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
반응형
'개발관련 > Git' 카테고리의 다른 글
.gitignore와 .gitkeep의 차이점 (0) | 2021.08.05 |
---|---|
Unity3D 소스 제어에 Git을 사용하는 방법 (0) | 2021.08.05 |
Git에서 분기 토폴로지 시각화 (0) | 2021.07.30 |
git 프로젝트의 'bin'디렉토리 무시 (0) | 2021.07.30 |
Windows에서 Git과 함께 작동하도록 편집기를 설정하는 방법 (0) | 2021.07.28 |