원격 저장소로 푸시 된 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
커밋 히스토리를 조작하지 않도록 새 커밋을 사용하여 커밋에서 특정 변경 사항을 되돌립니다.
'Nice programing' 카테고리의 다른 글
자바 스크립트의 함수 오버로딩-모범 사례 (0) | 2020.09.29 |
---|---|
git은 삭제 후 커밋되지 않은 삭제 된 파일을 복구합니다. (0) | 2020.09.29 |
Vim이 모든 공백을 문자로 표시하도록합니다. (0) | 2020.09.29 |
PHP에서 스레드 안전 또는 비 스레드 안전은 무엇입니까? (0) | 2020.09.29 |
SQL Server의 저장 프로 시저에서 텍스트 검색 (0) | 2020.09.29 |