본문 바로가기

TIL ( CODESTATES)

branch merge 실수 재현해보기

팀 프로젝트를 거의 시작하자마자 실수를 했다.

dev 브랜치에서 각자 태스크에 따라 feature 브랜치를 따서 작업한 후 pr해서 dev 브랜치에 merge를 해야 하는데

코드스테이츠 프로젝트 과제 설명만 읽다가 바로 해 버렸다.

 

급하게 내가 작성한 pr을 revert하는 버튼을 눌러봤지만 이게 맞는지도 몰랐다.

어떻게 진행되는지도 모르고 또 있을 수 있는 상황이라서 급히 실습을 해 보았다.

 


1. 실습 브랜치 생성하기

- 먼저 github에서 branch-practice 라는 새로운 repository를 만들어서 pc로 클론했다.

 

 

2. dev 브랜치 생성 및 react app 생성

- master 브랜치이기 때문에 dev 브랜치를 새로 생성해서 이동 후 'practice' 라는 react app을 만들었다.(create-react-app)

 

그림1

- Find or create a branch... 에서 dev 브랜치를 바로 생성할 수 있다.

-View all branches 클릭해서 들어가면 Default branch가 나오는데 오른쪽에 있는 화살표 버튼을 클릭하면 default branch를 변경할 수 있다. feature들을 merge할 브랜치는 dev가 될 것이므로 default를 dev로 변경했다.

 

-practice로 이동 후 npm start해서 실행이 되는 것을 확인했다. (App.js에서 내용은 Hello world! 로 변경해 보았다.)

-수정한 dev 브랜치를 push 하고 github에서 확인 후 다시 코드를 clone 받았다.

 

 

 

 

 

3. github issues에서 태스크 이슈 #1 생성하기

-pr 시 linked issue에 태스크issue 를 넣었더니 이슈가 closed 되는 문제도 발생했다. 이 문제 또한 재현해 본다.

 

 

4. feature#1 브랜치 생성 후 push 하기

 

-dev 브랜치 아래에 feature#1 브랜치를 생성했다.

-header-footer.js라는 파일을 하나 만든 후 커밋과 푸쉬를 했다.

 

-> 브랜치가 main, dev, feature#1까지 3개가 생성되었고

feature#1 브랜치에는 dev에 있던 내용+header-footer.js 으로 내용이 추가되었다.

 

 

 

 

5. (실수 상황 재연)  pull request, linked issue, merge

 

-feature#1을 dev 브랜치와 merge할 수 있다는 메세지가 나와서 pull request를 했다.

-> Pull reqeusts 탭에 내가 feature#1 커밋했던 메세지가 적힌 목록이 하나 생겼다.

 

그림2

-해당 pull request 를 하면 그림2처럼 merge 할 수 있다는 안내가 또 나왔다. 

-오른쪽에 있는 Linked issues에 처음에 issue에서 추가했던 #1 이슈를 연결한 후 Merge pull request 버튼을 눌렀다.

 

 

 

 

 

 

그림3

그림3) merge를 완료되면서 그림3과 같이 log가 생겼다. Revert를 할 수도 있고 아니면 feature#1 브랜치가 성공적으로 merge되었으므로 브랜치를 삭제할 수도 있다고 한다.

 

 

 

 

 

그림4

 

그림4) issues 탭을 확인해 보니 linked issue로 연결했던 feature#1은 closed 되었고 

code 탭에서 dev 브랜치를 확인해보니 header-footer.js 파일이 추가되어 있었다.

 

 

 

 

 

 

 

6. Revert 해 보기

-내가 작성한 pull request 에서 revert 버튼을 눌렀다.

 ->Revert "feature#1 header-footer created 라는 제목과 함께 revert를 하는 pull request 화면이 나왔고 pr을 생성했다.

 -> 처음에 실수로 작성한 pr 때 처럼 이번에도 revert pr이 pull requests 목록에 생성되었다.

 

 

 

 

그림5

-> revert pr 을 생성하자 branch 갯수가 4가 되면서 revert-2-feature#1이라는 브랜치가 생성되었다.

 

 

 

 

 

7. Revert pr 을 merge하기

해당 revert pr을 클릭한 뒤 linked issues에서 closed 되어있던 관련 이슈를 선택하고 Merge pull request 를 했다.

-> feature#1 브랜치에서 merge한 내용인 header-footer.js가 dev 브랜치에서 삭제된 것을 확인했다.

 

성공적으로 dev 브랜치에 revert pr을 merge하는 과정이 끝났으므로 revert-2-feature#1브랜치를 삭제했다.

(revert pull request의 log에서 삭제할 수 있었다.)

 

 

 

 

 

8. Reopen issue

처음 pr을 할 때 linked issue로 연결했던 것이 revert pr 시 다시 연결했음에도 closed 상태였다. 왜인지는 모르지만.

그래서 해당 이슈에서 직접 reopen issue를 해 주었다.