programing

커밋 범위 git 되돌리기

batch 2023. 7. 10. 22:12
반응형

커밋 범위 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참조하십시오. "캐럿()^ 문자의 의미는 무엇입니까?")

되돌린 각 커밋은 개별적으로 커밋됩니다.

Henrik N은 논평에서 다음과 같이 설명합니다.

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

반응형