programing

Git Revert 사용 방법

bestprogram 2023. 7. 1. 09:05

Git Revert 사용 방법

어떻게 있다.git revert 중고?

은 중복된 질문처럼 , 때, 은중질문들있수만지도, 질할때다사니종, 합은종용대그답을문이것을 합니다.git resetGit에서 SHA 해시에 의한 커밋으로 복귀?

그러면 누군가가 어떻게 사용하는지 물었을 때.git reset사람들은 당신이 사용해야 한다고 대답합니다.git revertGit에 따라 - 롤백하는 방법.

어느새 8명의 다른 사람들이 OP의 엉덩이를 구하기 위한 그들만의 독특한 방법을 가지고 나타났습니다. 그 모든 것은 당신의 머리 위에 있습니다.

' to', 'Dummies Guide to', 'Dummies Guide'를 .git revert.

시나리오: 마스터하기 위해 두 번이나 약속했지만 좋지 않습니다.당신은 밀고 있고 다른 사람들은 당신의 나쁜 변화를 가지고 있습니다.

당신은 그것을 취소하고 싶어합니다.어떤 마법사나 패키지 관리자가 여기저기서 많은 것을 바꿨다고 해서 코드를 직접 풀 수 있는 것은 아닙니다. 단지 모든 것을 원래 상태로 되돌리고 싶을 뿐입니다.

이것이 바로 소스 제어에 관한 것입니다.저는 그것이 쉽다고 확신합니다.

좋아요, 당신은 사용할 것입니다.git revert 어떻게하지만 어떻게요?

그리달한후에를기리고▁running후▁after▁and에한를을 실행한 후에.git revert당신은 그 후에 다른 일을 해야 합니까?변경 내용을 되돌려야 합니까? 아니면 되돌려야 합니까? 아니면 저장소에 직접 적용합니까?

분명히, 당신은 다시 추진해야 할 것이고 아마도 당신의 공을 팀에 발표해야 할 것입니다.

git revert는 새로운 커밋을 만듭니다.

git revert기존 커밋과 반대되는 새 커밋을 만듭니다.

이렇게 하면 파일이 반환된 커밋이 존재하지 않는 것처럼 동일한 상태로 유지됩니다.예를 들어, 다음과 같은 간단한 예를 생각해 보십시오.

$ cd /tmp/example
$ git init
Initialized empty Git repository in /tmp/example/.git/
$ echo "Initial text" > README.md
$ git add README.md
$ git commit -m "initial commit"
[master (root-commit) 3f7522e] initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
$ echo "bad update" > README.md 
$ git commit -am "bad update"
[master a1b9870] bad update
 1 file changed, 1 insertion(+), 1 deletion(-)

이 예에서 커밋 기록에는 두 개의 커밋이 있으며 마지막 하나는 실수입니다.깃 되돌리기 사용:

$ git revert HEAD
[master 1db4eeb] Revert "bad update"
 1 file changed, 1 insertion(+), 1 deletion(-)

로그에는 3개의 커밋이 있습니다.

$ git log --oneline
1db4eeb Revert "bad update"
a1b9870 bad update
3f7522e initial commit

따라서 발생한 일에 대한 일관된 기록이 있지만 파일은 불량 업데이트가 발생하지 않은 것처럼 보입니다.

cat README.md 
Initial text

기록에서 되돌리는 커밋이 어디에 있는지는 중요하지 않습니다(위의 예에서, 마지막 커밋은 되돌립니다 - 모든 커밋은 되돌릴 수 있습니다).

마무리 질문

당신은 그 후에 다른 일을 해야 합니까?

A git revert다른 사용자가 변경사항을 풀/풀/풀링할 수 있도록 원격으로 푸시하면 작업이 완료됩니다.

변경 내용을 되돌려야 합니까? 아니면 되돌려야 합니까? 아니면 repo에 직접 반영합니까?

git revert 커밋입니다. 단일 커밋을 되돌리는 것이 사용자가 원하는 것이라고 가정하는 추가 단계는 없습니다.

분명히 당신은 다시 추진해야 할 것이고 아마도 팀에 발표할 것입니다.

실제로 - 원격이 불안정한 상태에 있는 경우 - 수정(전환 커밋)을 받기 위해 필요한 나머지 팀과 통신하는 것이 올바른 방법입니다.

Gitrevert를 다음과 같이 사용합니다.

git revert <insert bad commit hash here>

git revert롤백된 변경 사항으로 새 커밋을 만듭니다. git reset새 커밋을 수행하는 대신 Git 기록을 지웁니다.

다음 단계는 다른 커밋과 동일합니다.

질문은 꽤 오래되었지만 되돌리기는 여전히 (나와 같은) 사람들을 혼란스럽게 합니다.

초보자로서 약간의 시행착오(시행보다 오류가 더 많다)를 겪은 후에 저는 중요한 요점을 얻었습니다.

  • git revert삭제할 커밋 ID가 필요합니다. 삭제할 커밋을 기록에 보관합니다.

  • git reset유지하려는 커밋이 필요하며, 결과적으로 그 이후의 모든 항목을 기록에서 제거합니다.

즉, 사용할 경우revert 커를 ID 용면빈하기록추있고가커밋에이디가리렉토사면용재설하을정렉토. 하지 않은것처럼 .처음 커밋으로 되돌리면 기록이 마지막 커밋이 발생하지 않은 것처럼 됩니다.

다음과 같은 로그를 사용하여 더욱 명확하게 설명합니다.

# git log --oneline

cb76ee4 wrong
01b56c6 test
2e407ce first commit

용사를 합니다.git revert cb76ee4기본적으로 파일을 01b56c6으로 되돌리고 기록에 추가 커밋을 추가합니다.

8d4406b Revert "wrong"
cb76ee4 wrong
01b56c6 test
2e407ce first commit

git reset 01b56c6그의 다른 을 정리합니다.: 파일 이름: "01b56c6"은 사용자의 파일을 참조하십시오.

01b56c6 test
2e407ce first commit

이것들이 "기본"이라는 것을 알지만, 달리기를 하는 것은 저에게 꽤 혼란스러웠습니다.revertid(' commit파일을 하는 데 시간이 . 이 'commitid.first id('first commit')를 .에서 초기 파일을 찾기를 기대했는데, 이해하는 데 시간이 오래 걸렸습니다. 파일이 'first commit'로 다시 필요하면 다음 id를 사용해야 합니다.

ㅠㅠreset그리고.revert동일한 대화에서 자주 등장하는 경향이 있습니다. 왜냐하면 버전 제어 시스템이 서로 다른 의미로 사용하기 때문입니다.

특히 서브버전이나 Perforce에 익숙한 사람들은 파일에 대한 커밋되지 않은 변경사항을 버리고자 하는 경우가 많습니다.revert그들이 실제로 원한다고 말하기 전에.reset.

가지로찬마,로,revert다른 VCS에서 이와 동등한 값을 종종 호출합니다.rollback것 - " 몇 가지 커밋을 싶다"는 의미를 가질 수 , 은 "나는 마지막 몇 커밋을 완전히 버리고 "는 입니다.reset하지만 아닙니다.revert그래서 사람들은 자신이 무엇을 하고 싶은지는 알고 있지만 어떤 명령을 사용해야 하는지는 명확하지 않은 혼란이 많습니다.

되돌리기에 대한 당신의 실제 질문에 대해서는

좋아요, 당신은 Git revert를 사용할 것입니다만, 어떻게 합니까?

git revert first-bad-commit^..last-bad-commit

에 하십시오.^첫 번째 배드 커밋의 문자입니다.은 다의상항참다니조합을의 입니다.first-bad-commit되돌리기 범위에 시작 커밋이 포함되어 있지 않기 때문입니다.

그리고 gitrevert를 실행한 후에 당신은 다른 것을 해야 합니까?변경 내용을 되돌려야 합니까? 아니면 되돌려야 합니까? 아니면 저장소에 직접 적용합니까?

기적으로본,git revert커밋 메시지를 묻는 메시지를 표시한 다음 결과를 커밋합니다.이것은 무시할 수 있습니다. 페이지를 인용합니다.

--편집

이 옵션을 사용하면 Git revert를 사용하면 되돌리기를 커밋하기 전에 커밋 메시지를 편집할 수 있습니다.터미널에서 명령을 실행하는 경우 이 값이 기본값은 다음과 같습니다.

-- 커밋 없음

일반적으로 명령은 반환된 커밋을 나타내는 커밋 로그 메시지와 함께 일부 커밋을 자동으로 만듭니다.이 플래그는 명명된 커밋을 작업 트리 및 인덱스로 되돌리는 데 필요한 변경 사항을 적용하지만 커밋은 적용하지 않습니다.또한 이 옵션을 사용하는 경우 색인이 HEAD 커밋과 일치할 필요가 없습니다.인덱스의 시작 상태에 대해 되돌리기가 수행됩니다.

이 기능은 둘 이상의 커밋 효과를 인덱스로 연속적으로 되돌릴 때 유용합니다.

특히 기본적으로 되돌리는 각 커밋에 대해 새 커밋을 만듭니다.사용할 수 있습니다.revert --no-commit변경 사항을 개별 커밋으로 커밋하지 않고 모든 변경 사항을 되돌리는 변경 사항을 생성한 다음 시간에 커밋합니다.

다음과 같은 'gitrevert commit id'를 실행하여 몇 가지 커밋을 되돌렸습니다.

git revert b2cb7c248d416409f8eb42b561cbff91b0601712

그런 다음 되돌리기를 커밋하라는 메시지가 표시됩니다('git commit'을 실행할 때처럼).기본 터미널 프로그램은 Vim이므로 다음을 실행했습니다.

:wq 

마지막으로 다음을 사용하여 저장소에 변경 사항을 적용했습니다.

git push

아래 인포그래픽은 다음과 같은 방법을 보여줍니다.git revert역 는본질적로반것입다니된전으▁essential▁is것다니ly▁inverted▁an입는.git cherry-pick앞으로 굴림으로써 내용을 취소합니다. 되돌리는 대상 커밋은 기록에 남아 있습니다!

사용하다git revert전체 기록을 다시 쓸 수는 없지만 이전 커밋을 완전히 취소하려는 경우.대부분의 Git 명령과 마찬가지로 되돌리기는 로컬에서 수행되므로 나머지 팀과 공유하려면 결과 커밋을 푸시해야 합니다.

Infographic showing how "git revert" is essentially an inversed "git cherry-pick", undoing stuff by rolling forward

git revert HEAD~x --no-edit

-- 커밋 메시지 편집기를 건너뛰려면 편집 안 함

x는 숫자입니다. 그것은 당신이 돌아가고 싶은 단계의 수를 나타냅니다.

언급URL : https://stackoverflow.com/questions/19032296/how-to-use-git-revert