IT박스

Git 되돌리기를 사용하는 방법

itboxs 2020. 12. 1. 07:49
반응형

Git 되돌리기를 사용하는 방법


어떻게 git revert사용됩니까?

이것은 중복 질문처럼 들릴 수 있지만 사람들이 질문 할 때 응답은 종종 Git의 SHA 해시에 의한 커밋으로 되돌리기에git reset 따라 사용 됩니까?

그런 다음 누군가가 git reset사람들 을 사용하는 방법을 물으면 Git에git revert 따라 사용해야한다고 응답합니다 -롤백 방법

당신이 알기 전에 8 명의 다른 사람들이 OP의 엉덩이를 구하는 독특한 방법으로 나타났습니다. 모두 당신의 머리 위에 있습니다.

그러니 간략한 내용을 집어 넣고에 대한 입문자 가이드를 작성해 보겠습니다 git revert.

시나리오 : 당신은 마스터하기 위해 두 번 헌신했고 그것의 나쁘다. 당신은 밀고 다른 사람들은 당신의 나쁜 변화를 가지고 있습니다.

실행 취소하고 싶습니다. 코드에서 직접 실행 취소 할 수있는 것은 아닙니다. 일부 마법사 나 패키지 관리자가 사방에서 수많은 항목을 변경했다고 가정합니다. 모든 것을 원래 상태로 되돌리고 싶을뿐입니다.

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

좋아, 사용할 git revert거지만 어떻게?

그리고 달리고 나서 git revert다른 일을해야합니까? 변경 사항 되돌리기를 커밋해야합니까? 아니면 repo에 직접 커밋해야합니까?

당연히 당신은 다시 밀어 붙이고 아마도 당신의 공을 팀에 알릴 필요가있을 것입니다.


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 사용 :

$ 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 하나의 당신이하고 싶었던 것입니다 커밋 되 돌리는 가정에는 추가 단계가없는 - 커밋.

당연히 당신은 다시 밀어 붙이고 아마도 팀에 발표해야 할 것입니다.

실제로-리모컨이 불안정한 상태에있는 경우-수정 (되 돌리는 커밋)을 얻기 위해 당겨야하는 나머지 팀과 통신하는 것이 올바른 방법입니다. :).


다음과 같이 git revert를 사용하십시오.

git revert <insert bad commit hash here>

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

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


그 이유 resetrevert다른 버전 제어 시스템은 다른 의미 그들을 사용하기 때문에 같은 대화를 많이 마련하는 경향이있다.

특히 파일에 대한 커밋되지 않은 변경 사항을 버리고 싶은 SVN 또는 P4에 익숙한 사람들은 revert실제로 원하는 reset.

Similarly, the revert equivalent in other VCSes is often called rollback or something similar - but "rollback" can also mean "I want to completely discard the last few commits", which is appropriate for reset but not revert. So, there's a lot of confusion where people know what they want to do, but aren't clear on which command they should be using for it.

As for your actual questions about revert...

Okay, you're going to use git revert but how?

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

And after running git revert do you have to do something else after? Do you have to commit the changes revert made or does revert directly commit to the repo or what??

By default, git revert prompts you for a commit message and then commits the results. This can be overridden. I quote the man page:

--edit

With this option, git revert will let you edit the commit message prior to committing the revert. This is the default if you run the command from a terminal.

--no-commit

Usually the command automatically creates some commits with commit log messages stating which commits were reverted. This flag applies the changes necessary to revert the named commits to your working tree and the index, but does not make the commits. In addition, when this option is used, your index does not have to match the HEAD commit. The revert is done against the beginning state of your index.

This is useful when reverting more than one commits' effect to your index in a row.

In particular, by default it creates a new commit for each commit you're reverting. You can use revert --no-commit to create changes reverting all of them without committing those changes as individual commits, then commit at your leisure.


I reverted back a few commits by running 'git revert commit id' such as:

git revert b2cb7c248d416409f8eb42b561cbff91b0601712

Then i was prompted to commit the revert (just as you would when running 'git commit'). My default terminal program is Vim so i ran:

:wq 

Finally i pushed the change to the repository with:

git push

참고URL : https://stackoverflow.com/questions/19032296/how-to-use-git-revert

반응형