자바스크립트를 활성화 해주세요

d019 Merge Request가 왔습니다. 로컬에서 테스트를 돌려보고, 약간 수정하고 Push하고 Merge하고 Prune하고 Comment하기

 ·  ☕ 3 min read

동료가 merge request를 보내 Review를 요청해 왔습니다. 그냥 웹에서 내용을 확인하고 머지를 했었는데, 이번에는 UnitTest가 포함되어 있고, 조금 확인해 보고 싶은 부분이 있어서 로컬에서 돌려보고 확인해 보려 합니다.

‘정말 이대로 움직인단 말이야?’

당황하지 마세요. 저는 이렇게 합니다.

git pull -a

우선 git pull 해서 리모트에 어떤 branch가 있는 지 살펴보았습니다.

git branch -a

네, local에 있는 branch와 remote에 있는 브랜치가 나옵니다.

PS C:\tkim.info> git branch -a
* master
  tkim_bulk_modification
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/tkim_bulk_modification
  remotes/origin/update_add-account_test

이중에 merge request 가 온 것은 update_add-account_test 브랜치네요. 당연히 pull request의 branch는 로컬에 존재하지 않습니다.
# pull request는 merge request와 같은 용어입니다. github는 pull request, gitlab등은 merge request라는 용어를 사용합니다.

그냥 fetch 해서 checkout하면 될 것 같은데.. 아. github에서는 조금 다르게 나올 수 있습니다.

github에서는

검색을 해보면 github에는 다음과 같은 문서를 준비하고 있습니다.
Checking out pull requests locally

$ git fetch origin pull/ID/head:BRANCHNAME

fetch를 해 봅니다.

$ git fetch origin merge_requests/75/head:update_add-account_test

결과는?

PS C:\tkim.info> git fetch origin merge_requests/75/head:update_add-account_test
warning: redirecting to https://gitlab.com/tkim.info/tkiminfo.git/
fatal: couldn't find remote ref merge_requests/75/head

잘 안됩니다. 실은 저희는 gitlab을 사용하고 있습니다. 그래서 그냥 fetch를 실행합니다.

git fetch

내용을 가져옵니다.

1
2
3
4
PS C:\tkim.info> git fetch origin update_add-account_test
warning: redirecting to https://gitlab.com/tkim.info/tkiminfo.git/
From https://gitlab.com/tkim.info/tkiminfo
 * branch            update_add-account_test -> FETCH_HEAD

## git fetch

fetch된 branch에 checkout해 봅니다.

PS C:\tkim.info> git checkout update_add-account_test
Switched to a new branch 'update_add-account_test'
Branch 'update_add-account_test' set up to track remote branch 'update_add-account_test' from 'origin'.
PS C:\tkim.info> git branch
  master
  tkim_bulk_modification
* update_add-account_test

로컬로 잘 가져왔습니다. master와는 어떤 변경사항이 있는 거죠?? master랑 비교해 봅니다.

git diff master..HEAD

git diff master..HEAD

아. 최근 소스가 반영이 안되어 있었네요. 이래서는 이 Merge Request에 뭐가 바뀌어 있는지 확인이 안됩니다. master를 이 브랜치에 Merge합니다.

PS C:\tkim.info> git merge master
Merge made by the 'recursive' strategy.
 .gitignore                                         |  1 +
 .../Deprecated/Run-Command.ps1        |  9 +++----
 Rouge/1.0.0/Functions/Get-TkimConfig.ps1          | 24 +++++++++---------
 Rouge/1.0.0/Functions/New-.ps1         | 17 +++++++++----
 .../Functions/New-inner_script_1.ps1  | 27 +++++++++++++++-----
 .../Functions/New-inner_script_2.ps1  | 29 ++++++++++++++++------
 .../Functions/Tests/New-ACcount.Tests.ps1     | 25 ++++++++++++-------
 7 files changed, 86 insertions(+), 46 deletions(-)
 create mode 100644 .gitignore

다시 mater와 비교해 봅니다.

git diff master..HEAD

이제 무엇이 달라졌는 지 확인할 수 있습니다. ‘으음. 이렇게 작성했구나’. 이제 UnitTest를 실행해 봅니다. UnitTest의 실행방법은 각각 프로젝트나 프레임워크에 따라 다르겠죠?

실행이 되었습니다. 결과는 문제가 없는 것 같습니다. 그런데 약간 수정했으면 하는 부분이 있다면?

수정하고 commit하고 push합니다.

merge

네 gitlab페이지에서 코멘트를 남기고 merge 했습니다. 오케이.

merge할 때, source branch를 삭제하거나 squash해서 하나의 커밋으로 만들어서 merge할 수도 있습니다.

이제 merge된 branch가 삭제되어 있는 지 확인합니다.

git branch --merged

네, Merge되면서 source branch가 삭제되어 있네요.

git remote prune origin

이제 로컬에서 동기화해야겠습니다. remote에는 삭제되어 있는 branch가 local에 남아있기 때문입니다. 필요없으니 동기화해서 지울 때는 git remote prune 을 사용합니다.

git remote prune origin

만일 내가 로컬에서 수정해서 commit해 push하였다면, 로컬의 branch가 남아 있을 수 있습니다. 이때는 수동으로 지워주시면 됩니다.

git branch --delete update_add-account_test

그런데 내 commit이 merge되어 있지 않았다는 메시지가 나오는 경우도 있습니다만, master에 merge되어 있다는 것을 알고 있다면 –force를 붙여서 삭제하면 됩니다. # 또는 -D 옵션을 사용하는 것도 가능합니다.

Merge Comment

누군가가 유닛테스트를 작성하여 MR을 요청하면, 저는 제 개발환경에서 그 UnitTest를 반드시 돌려보고 결과를 코멘트 합니다. 주로 실행된 출력결과까지 함께 작성합니다. 그 쪽이 Review를 받는 쪽에서도 안심이 됩니다.

가끔은 UnitTest를 나도 하나 추가해서 올리기도 합니다.

레퍼런스

공유하기

tkim
글쓴이
tkim
Software Engineer