git 에서 특정 커밋으로 롤백하는 방법은 무엇입니까?
누군가 나에게 줄 수있는 가장 좋은 대답 git revert
은 원하는 커밋에 도달 할 때까지 X 번 을 사용하는 것이 었습니다 .
그래서 20 커밋 된 커밋으로 되돌리려면 20 번 실행해야한다고 가정 해 봅시다.
더 쉬운 방법이 있습니까?
이 저장소가 공개되어 있기 때문에 재설정을 사용할 수 없습니다.
답변
이 시도:
git checkout [revision] .
[revision]
커밋 해시는 어디에 있습니까 (예 🙂 12345678901234567890123456789012345678ab
.
.
끝 부분을 잊지 말고 매우 중요합니다. 전체 트리에 변경 사항이 적용됩니다. git project root에서이 명령을 실행해야합니다. 서브 디렉토리에 있으면이 명령은 현재 디렉토리의 파일 만 변경합니다. 그런 다음 커밋하고 잘해야합니다.
이 방법으로 취소 할 수 있습니다
git reset --hard
작업 디렉토리 및 준비 영역에서 모든 수정 사항이 삭제됩니다.
답변
특정 커밋으로 롤백하려면
git reset --hard commit_sha
10 개의 커밋을 롤백하려면 :
git reset --hard HEAD~10
기록을 다시 쓰지 않으려면 다음 게시물과 같이 “git revert”를 사용할 수 있습니다
Git 리포지토리를 이전 커밋으로 되 돌리는 방법은 무엇입니까?
답변
글쎄, 질문은 ‘롤백’이 무슨 뜻입니까? 당신이 할 수없는 경우 reset
는 공공 그리고 당신은 그대로 역사를 커밋 유지하려는 때문에, 당신은 당신이 당신의 작업 복사본이 특정 커밋 반영하려는 의미합니까? git checkout
커밋 해시를 사용하십시오 .
편집 : 의견에서 지적했듯이 git checkout
분기를 지정하지 않고 사용 하면 “분기 없음”상태가됩니다. 사용 git checkout <commit> -b <branchname>
지점에, 또는 체크 아웃에 git checkout <commit> .
현재의 지점에 체크 아웃.
답변
원래 포스터는 다음과 같이 말합니다.
누군가 나에게 줄 수있는 가장 좋은 대답
git revert
은 원하는 커밋에 도달 할 때까지 X 번 을 사용하는 것이 었습니다 .그래서 20 커밋 된 커밋으로 되돌리려면 20 번 실행해야한다고 가정 해 봅시다.
더 쉬운 방법이 있습니까?
이 저장소가 공개되어 있기 때문에 재설정을 사용할 수 없습니다.
git revert
X 번 을 사용할 필요는 없습니다 . git revert
커밋 범위를 인수로 받아 들일 수 있으므로 한 번만 사용하여 커밋 범위를 되돌릴 수 있습니다. 예를 들어, 마지막 20 개의 커밋을 되돌리려면 다음을 수행하십시오.
git revert --no-edit HEAD~20..
커밋 범위 HEAD~20..
는 짧으며 HEAD~20..HEAD
” HEAD 커밋 의 20 번째 부모 에서 시작하여 커밋 범위 를 HEAD까지 되돌립니다”를 의미합니다.
병합 커밋이 없다고 가정하면 지난 20 개의 커밋을 되돌 립니다. 병합 커밋이있는 경우 하나의 명령으로 모두 커밋 할 수 없으므로 다음과 같이 개별 커밋해야합니다
git revert -m 1 <merge-commit>
또한 git revert
git 버전 1.9.0 을 사용하여 범위를 사용하여 테스트했습니다 . 이전 버전의 git을 사용하는 경우 범위를 사용 git revert
하거나 작동하지 않을 수 있습니다.
이 경우 git revert
보다 선호됩니다 git checkout
.
참고는 달리 사용 말합니다이 답변git checkout
, git revert
실제로 당신이 복귀하고 있다는 커밋의에서 추가 된 파일을 제거합니다 이에게 개정의 범위를 되돌릴 수있는 올바른 방법을 만드는을.
선적 서류 비치
답변
1 단계 : 커밋 목록 가져 오기 :
git log
이 예제와 같이 목록이 표시됩니다.
[Comp:Folder User$ git log
commit 54b11d42e12dc6e9f070a8b5095a4492216d5320
Author: author <author@gmail.com>
Date: Fri Jul 8 23:42:22 2016 +0300
This is last commit message
commit fd6cb176297acca4dbc69d15d6b7f78a2463482f
Author: author <author@gmail.com>
Date: Fri Jun 24 20:20:24 2016 +0300
This is previous commit message
commit ab0de062136da650ffc27cfb57febac8efb84b8d
Author: author <author@gmail.com>
Date: Thu Jun 23 00:41:55 2016 +0300
This is previous previous commit message
...
2 단계 : 필요한 커밋 해시를 복사하여 체크 아웃하기 위해 붙여 넣기
git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f
그게 다야.
답변
git read-tree -um @ $commit_to_revert_to
할 것입니다. “git checkout”이지만 HEAD를 업데이트하지 않습니다.
같은 효과를 얻을 수 있습니다
git checkout $commit_to_revert_to
git reset --soft @{1}
편의 명령을 함께 묶는 것을 선호하는 경우.
이것들은 원하는 상태로 작업 트리와 색인을 남기고 git commit
마치면됩니다.
답변
HEAD 분리 모드를 원하십니까?
DETACHED HEAD를 사용하여 X 커밋을 특정 커밋으로 롤백하려면 (아무것도 엉망으로 만들 수 없음을 의미) 반드시 다음을 사용하십시오.
(X를 당신이 돌아가고 싶은 커밋 수로 대체하십시오)
git checkout HEAD~X
한 커밋으로 돌아가는 IE :
git checkout HEAD~1