지난 실습에서 master 브랜치를 초기화하고 다시 충돌을 발생시켜 보겠습니다.
우선 마스터 브랜치로 이동하여 pull을 통해 버전을 최신화시키고 아래와 같이 수정합니다.
git checkout master
git pull origin master
git commit -am "init"
number-to-alphabet-4 브랜치를 생성합니다.
git checkout -b number-to-alphabet-4
1 -> one으로 수정하고 원격 저장소(number-to-alphabet-4)에 push 합니다.
work.txt에서 1->one으로 수정
git commit -am "one"
git push origin number-to-alphabet-4
그리고 원격 저장소로 이동해서 pull request 합니다.
pull request가 생성됐습니다.
충돌을 발생시키기 위해 master 브랜치로 이동해서 work.txt의 1-> 일로 수정하고 원격 저장소(master)에 push 합니다.
git checkout master
work.txt 수정
git commit -am "일"
git push origin master
master 브랜치에 push를 하면 아까 전에 pull request를 신청했던 곳에서 충돌이 생겨 merge가 불가능하다고 표시됩니다.
conflict(충돌)을 해결하는 방법은 2가지가 있는데 이번에는 command line을 이용해서 해결해 보겠습니다.
command line을 클릭합니다.
command line을 클릭 아래에 이런 화면에 표시됩니다.
step1은 충돌 난 내용을 number-to-alphabet-4로 가져오는 것이고 step 2는 number-to-alphabet-4를 master 브랜치에 병합해서 원격 저장소에 업로드하는 것입니다.
즉, 로컬에서 충돌을 해결하고 충돌이 해결된 브랜치를 master 브랜치에 merge 하고 그 내용을 원격 저장소에 업로드한다는 뜻입니다.
number-to-alphabet-4로 브랜치를 이동합니다.
git checkout number-to-alphabet-4
그리고 master 브랜치를 병합합니다.
git merge master
그러면 충돌 부분이 표시되는 부분을 수동으로 수정합니다.
충돌을 해결했다면 add 하고 commit 합니다.
그리고 충돌을 해결한 버전을 다시 원격 저장소(number-to-alphabet-4)에 push 하게 되면
충돌이 해결돼서 다시 merge가 가능한 상태로 변경됩니다.
여기서 merge 버튼을 클릭해도 되지만 step 2의 내용을 따러서 그대로 진행해보겠습니다.
step 2는
1. master 브랜치로 이동
2. number-to-alphabet-4 브랜치 내용을 병합
3. 원격 저장소의 master 브랜치에 push
입니다.
1. master 브랜치로 이동합니다.
git checkout master
2. number-to-alphabet-4 브랜치 내용을 병합합니다.
number-to-alphabet-4에서 만든 merge commit이 있기 때문에 git merge-to-alphabet-4를 입력하면 fast-forward 되지 때문에 merge을 생성하지 않습니다.
하지만 git에서 제공한 명령어를 보면 --no--ff라는 옵션이 추가로 달려 있습니다.
이것은 fast-forward를 이용하지 않는다는 뜻으로 이 옵션을 주면 다시 merge commit을 생성하게 됩니다.
아래 명령어를 입력하면 fast-forward 상황에서도 merge commit이 생성됩니다.
아래 명령어를 입력하면 새로운 commit을 생성합니다.
git merge --no--ff number-to-alphabet-4
여기서 원격 저장소의 master 브랜치로 push 하게 되면 github가 체크 자동으로 pull request 내용을 닫아주게 됩니다.
git push origin master
pull request page로 이동해보면 merge 처리되어 나옵니다.
'Git&Github' 카테고리의 다른 글
38. [Git] Visual Studio Code로 git 저장소 초기화 (0) | 2021.09.06 |
---|---|
37. [Git] pull request의 종류 (0) | 2021.09.06 |
35. [Git] pull request 충돌해결하기(web editor) (0) | 2021.09.05 |
34. [Git] pull request 소통하기 (0) | 2021.09.05 |
33. [Git] pull request 만들기 (0) | 2021.09.05 |