커밋 범위 git 되돌리기
커밋 범위를 되돌리려면 어떻게 해야 합니까?Gitrevisions 설명서를 보면 필요한 범위를 지정하는 방법을 알 수 없습니다.예:
A -> B -> C -> D -> E -> HEAD
다음과 같은 작업을 수행하고자 합니다.
git revert B-D
결과는 다음과 같습니다.
A -> B -> C -> D -> E -> F -> HEAD
여기서 F는 B-D의 역을 포함합니다.
어떤 버전의 Git을 사용하고 있습니까?
Git1.7.2+에서만 지원되는 여러 커밋 되돌리기: 자세한 내용은 "여러 번 되돌리기를 사용하여 이전 커밋으로 롤백"을 참조하십시오.
현재 man 페이지는 현재 Git 버전(1.7.4+) 전용입니다.
OP Alex Spurling이 논평에서 보고한 바와 같이:
1.7.4로 업그레이드하면 정상적으로 작동합니다.
제 질문에 답하자면, 제가 찾던 구문은 다음과 같습니다.
git revert B^..D
B^
다음을 포함할 수 있는 "B의 첫 번째 부모 커밋"을 의미합니다.B
역전에
구문이 포함된 "수정사항 지정" 섹션을 git rev-parse
참조하십시오. "캐럿()^
문자의 의미는 무엇입니까?")
되돌린 각 커밋은 개별적으로 커밋됩니다.
git revert OLDER_COMMIT^..NEWER_COMMIT
아래와 같이 즉시 커밋하지 않고 되돌릴 수 있습니다.
git revert -n OLDER_COMMIT^..NEWER_COMMIT
git commit -m "revert OLDER_COMMIT to NEWER_COMMIT"
단일 커밋에서 커밋 범위 B를 D로 되돌리려면(최소 git 버전 2)
git revert -n B^..D
이것은 B의 상위 커밋(제외)에서 D 커밋(포함)으로 커밋에 의해 수행된 변경 사항을 되돌리지만, 되돌린 변경 사항으로 커밋을 만들지는 않습니다.되돌리기는 작업 트리와 인덱스만 수정합니다.
다음 시간 이후에 변경 사항을 커밋하는 것을 잊지 마십시오.
git commit -m "revert commit range B to D"
동일한 방법을 사용하여 하나의 커밋에서 관련이 없는 여러 커밋을 되돌릴 수도 있습니다.예를 들어 B와 D는 되돌리지만 C는 되돌리지 않는 경우
git revert -n B D
git commit -m "Revert commits B and D"
참조: https://www.kernel.org/pub/software/scm/git/docs/git-revert.html
Honza Haering의 수정에 감사합니다.
하고있다git revert OLDER_COMMIT^..NEWER_COMMIT
나한텐 안 통했어요
사용한git revert -n OLDER_COMMIT^..NEWER_COMMIT
그리고 모든 것이 좋습니다.Git 버전을 사용하고 있습니다.1.7.9.6
.
사용하다git rebase -i
관련 커밋을 하나로 압축합니다.그러면 한 번만 되돌릴 수 있습니다.
언급URL : https://stackoverflow.com/questions/4991594/revert-a-range-of-commits-in-git
'programing' 카테고리의 다른 글
문자열의 첫 번째 문자 가져오기 및 제거 (0) | 2023.07.10 |
---|---|
Spring Boot에서 FTP로 파일 보내기 및 받기 (0) | 2023.07.10 |
10.4.14 버전에서 mariaDB 버전을 아는 방법 - MariaDB (0) | 2023.07.10 |
우발적인 Git Stash Pop 실행 취소 (0) | 2023.07.10 |
저장 프로시저에서 목록을 매개 변수로 전달하려면 어떻게 해야 합니까? (0) | 2023.07.10 |