DevOps/GIT

github#17 git pull request 충돌 & web editor 해결

aliceintr 2020. 11. 27. 14:00
반응형

다양한 브랜치에서 동시에 작업을 하고 remote repository 에 push 를 한다면 충돌은 피할 수 없을 것이다.

이럴 때 해결할 수 있는 방법 중 하나에 대해서 알아본다.

 

먼저 충돌이 될 상황을 만들어 준다.


가정

  1. [feature3] Branch에서 text1.txt 파일을 수정하고 있는데 이와 동시에 [master] Branch에서 동일한 파일을 수정하고 있다. 같은 라인을 수정하고 있다고 가정하자.
  2. [feature3] 가 remote repository로 push
  3. [master] 가 remote repository로 push
  4. 원본파일

 


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에 있으며 무단 배포 및 사용은 자제해 주시기 바랍니다. *

반응형