programing

공개 리포트에서 이전 Git 커밋으로 롤백

goodsources 2023. 4. 16. 15:00
반응형

공개 리포트에서 이전 Git 커밋으로 롤백

git에서 특정 커밋으로 롤백하려면 어떻게 해야 하나요?

줄 수 가장 은 '어느 쪽인가'를 사용하는 이었다.git revertXX.

예를 들어 20년 전의 커밋으로 되돌리려면 20번 실행해야 합니다.

더 쉬운 방법은 없을까?

이 리포지토리가 공용이므로 재설정을 사용할 수 없습니다.

이것을 시험해 보세요.

git checkout [revision] .

서 ''는[revision] 해시입니다( "Commit Hash12345678901234567890123456789012345678ab

마세요.에 변경이 적용됩니다.그러면 변경 내용이 트리 전체에 적용됩니다.【git project root】【git 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 revertXX.

예를 들어 20년 전의 커밋으로 되돌리려면 20번 실행해야 합니다.

더 쉬운 방법은 없을까?

이 레포는 공개되어 있기 때문에 리셋을 사용할 수 없습니다.

git revertX배.git revert 는 커밋 범위를 인수로 받아들일 수 있으므로 커밋 범위를 되돌리려면 이 범위를 한 번만 사용해야 합니다.예를 들어, 마지막 20개의 커밋을 되돌리는 경우:

git revert --no-edit HEAD~20..

범위 " " "HEAD~20.. 말하다HEAD~20..HEAD"HEAD 커밋의 부모 20명부터th 시작하여 그 후에 모든 커밋을 HEAD로 되돌린다"를 의미합니다.

이 명령어는 마지막 20개의 커밋을 되돌립니다.단, 이들 커밋이 모두 Marge 커밋이 아니라고 가정합니다.병합 커밋이 있는 경우 모든 커밋을 1개의 명령어로 되돌릴 수 없습니다.이 경우 다음 명령을 사용하여 개별적으로 되돌릴 필요가 있습니다.

git revert -m 1 <merge-commit>

또한 git 버전 1.9.0을 사용하여 범위를 테스트한 적이 있습니다.이전 버전의 git을 사용하는 경우 범위 사용git revert이치노

「」는,git revertgit checkout.

사용한다는 이 답변과 달리, 는 되돌리는 커밋에 추가된 파일을 실제로 삭제합니다.이렇게 하면 리비전의 범위를 되돌리는 올바른 방법이 됩니다.

문서

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

그게 다예요.

HEAD 분리 모드를 원하십니까?

DECABLED HEAD를 사용하여 X시간을 특정 커밋으로 롤백하는 경우(즉, 어떤 것도 망치지 않습니다) 반드시 다음을 사용하십시오.

(X를 되돌리는 커밋 수로 바꿉니다.)

git checkout HEAD~X

I.E.는 하나의 커밋으로 돌아갑니다.

git checkout HEAD~1
git read-tree -um @ $commit_to_revert_to

할 수 있을 거예요."git checkout"이지만 HEAD를 업데이트하지 않습니다.

같은 효과를 얻을 수 있습니다.

git checkout $commit_to_revert_to
git reset --soft @{1}

편리한 명령어를 함께 스트링하는 것을 선호할 경우.

워크트리와 인덱스를 사용할 수 .git commit완성할 수 있습니다.

예를 들어, 프로젝트를 하고 하루 정도 후에 작업을 한다고 가정해 봅시다.아직 에러가 발생하고 있는 기능이 있습니다.그러나 에러의 원인이 된 변경을 알 수 없습니다.그래서 당신은 이전의 커밋을 낚아야 합니다.특정 커밋으로 되돌리려면:

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 .

좋아, 그럼 그 약속은 자네에게 효과가 있네에러는 없습니다.그 문제를 정확히 지적하셨군요.이제 최신 커밋으로 돌아갈 수 있습니다.

git checkout 792d9294f652d753514dc2033a04d742decb82a5 .

또한 오류가 발생하기 전에 특정 파일을 체크 아웃합니다(이 경우 Gemfile.lock 예를 사용합니다).

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 -- /projects/myproject/Gemfile.lock

이것은 커밋으로 작성한 에러를 나중에 깨닫지 않고 처리할 수 있는1가지 방법입니다.

각 커밋과 관련된 커밋 ID는 GitHub/BitBucket/Gitlab의 커밋 섹션에서 확인할 수 있습니다.매우 간단합니다. 커밋 ID가 5889575라고 가정하면 코드의 이 부분으로 돌아가려면 입력하기만 하면 됩니다.

git checkout 5889575 .

그러면 코드의 해당 시점으로 이동합니다.

변경된 내용은 알 수 없지만 옵션이 없으면 특정 커밋을 체크아웃할 수 없습니다.--detach나에게 통했던 완전한 명령어는 다음과 같았다.git checkout --detach [commit hash]

분리된 상태에서 돌아오려면 지역 지사를 체크해야 했습니다.git checkout master

이를 위한 예를 다음에 제시하겠습니다.

    cd /yourprojects/project-acme 


    git checkout efc11170c78 .

git에서 특정 커밋을 롤백하려면:

  • 오래된 git 커밋을 되찾다: (theac2ec...커밋명)
git checkout ac2ece0219689ed86b08c93dfebb0d02c0f1d5b1
  • HEAD 분리가 가리키는 새 분기의 이름:
git branch get_back_to_past
  • 그 지점까지 체크아웃하다
git checkout get_back_to_past

이 브랜치에는 과거 커밋 항목이 있습니다.예를 들어, 원하는 경우 마스터에 병합할 수 있습니다.

git head 및 이전 버전으로 롤백에 대한 자세한 내용은 여기를 클릭하십시오.

Github에서 커밋한 내용을 찾아 체크 아웃합니다.

git checkout <commit#>

예:git checkout b29ce12

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/2007662/rollback-to-an-old-git-commit-in-a-public-repo

반응형