스프링개발자/201 - 일반

9. Merged된 PR을 되돌리자 - Github

2ndPrince 2020. 7. 18. 05:53

[배경]

VCS를 사용하면서 남들의 review를 기다리고 있는 PR을 실수로 merge할 수 있다. (오늘 일어났다)

보통은 closed PR 섹션에 들어가면 `revert branch` 라는 버튼이 있으나, 없는 경우도 있다

git commands로 되돌리는 방법이 귀찮긴하지만, 가장 확실한 방법이니 여기서 연습하자


1. 되돌릴 branch와 commit을 생성

git branch test-revert
git checkout test-revert
파일을 변경한다
git add .
git commit -m "commit to be reverted"
git push

 

2. PR을 만들고 merge를 한다

이 Push Request는 Commit이 두개인걸 확인할 수 있다. 실수로 master 브렌치에 merge를 한 다음에 8분전에 만든

commit만을 뒤돌리자

 

3. 특정 commit만을 revert한다

 

그림을 보면, 오른쪽 아래에 Revert버튼이 있다. 이걸누르면, 두개의 commit을 되돌리는 하나의 commit을 만든다.

위의 두개의 commit이 각 한가지 파일만 바꿨으므로, 아래의 자동생성되는 revert PR이 두 commit모두를 revert한다고 확인할수 있다.

 

우리가 원하는 것은 fc259e6으로 시작하는 commit만을 되돌리고 싶다.

"git reset" 명령어를 쓰기 위해서는 배제할 commit이 필요 한게 아니라, 돌아가고 싶은 commit을 알아야 한다.

두가지 방법이 있다. 

- repo 페이지에서 커밋번호 3e55218를 클릭해서 full commit version을 확인한다

- 터미널에서 git log 명령어로 내가 돌아가고 싶은(실수하기 바로 이전) commit 을 확인한다

 

우리의 경우엔;

3e55218863e71ea01816b00aca09aa0203fbf755

git checkout test-revert
git reset --hard 3e55218863e71ea01816b00aca09aa0203fbf755
git push -f origin head

master branch에 가서 fc259e6의 커밋 내용이 없어졌는지 확인하자.