다양한 브랜치에서 동시에 작업을 하고 remote repository 에 push 를 한다면 충돌은 피할 수 없을 것이다.
이럴 때 해결할 수 있는 방법 중 하나에 대해서 알아본다.
먼저 충돌이 될 상황을 만들어 준다.
가정
- [feature3] Branch에서 text1.txt 파일을 수정하고 있는데 이와 동시에 [master] Branch에서 동일한 파일을 수정하고 있다. 같은 라인을 수정하고 있다고 가정하자.
- [feature3] 가 remote repository로 push
- [master] 가 remote repository로 push
- 원본파일
feature3 의 상황
% git checkout -b feature3
Switched to a new branch 'feature3'
% git commit -am "First commit by feature3"
[feature3 c84abc8] First commit by feature3
1 file changed, 1 insertion(+), 1 deletion(-)
% git push -u origin feature3
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 276 bytes | 276.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote:
remote: Create a pull request for 'feature3' on GitHub by visiting:
remote: https://github.com/aliceson89/GitLearn/pull/new/feature3
remote:
To github.com:aliceson89/GitLearn.git
* [new branch] feature3 -> feature3
Branch 'feature3' set up to track remote branch 'feature3' from 'origin'.
수정된 파일 모습
commit history
github.com
pull request 를 만들어 보자
아직까지는 아무도 push를 하지 않았기 때문에 아무런 충돌이 없다는 모습을 볼 수 있다.
master 의 상황
% git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
% git commit -am "commit by Master"
[master 6ef388f] commit by Master
1 file changed, 1 insertion(+), 1 deletion(-)
% git push
Warning: Permanently added the RSA host key for IP address '140.82.112.4' to the list of known hosts.
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 274 bytes | 274.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:aliceson89/GitLearn.git
7704f24..6ef388f master -> master
수정된 파일 모습
commit history
github.com
충돌사항 수정하고 다시 commit해서 최종 merge 하기
같은 부분을 수정하였기 때문에 이제 confllict 가 생겼다고 github이 알려준다.
이제 [web editor]를 클릭해서 변경사항을 github.com 내에서 바로 수정해보자.
요런 페이지를 볼수 있는데 여기서 충돌이 난 부분을 잘 표시해 주고 이를 고쳐보도록하자. 수정이 완료 되었으면 아래 버튼을 클릭
이제 다시 commit을 진행하면 된다.
이제서야 충돌없는 merge 를 할 수 있게 된다.
이제 각각의 브랜치로 가서 pull 을 해본다음 commit history 를 확인하도록하자.
master
Merge branch 'master' into feature3, Merge pull request #3 from aliceson89/feature3 가 생긴것을 볼 수 있다.
feature3
Merge branch 'master' into feature3, Merge pull request #3 from aliceson89/feature3 가 생긴것을 볼 수 있다.
다음편에는 실제 명령어로 이 충돌을 처리하는 방법을 알아보도록 하자.
내용이 도움이 되셨다면 블로그 구독하기 부탁드리겠습니다.
* 이 글의 모든 저작권은 aliceintr에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *
'DevOps > GIT' 카테고리의 다른 글
github#19 git pull request 종류 (0) | 2020.11.27 |
---|---|
github#18 git pull request 충돌 & command line 해결 (0) | 2020.11.27 |
github#16 git pull request & git merge request 2편 (0) | 2020.11.27 |
github#15 git pull request & git merge request 1편 (0) | 2020.11.27 |
github#14 git project 잘 관리하기 (0) | 2020.11.26 |