Pull을 할 때
- 내 코드와 비교해서 추가된 부분은 문제없이 추가된다.
- 내 코드에서 처음으로 더 추가된 부분도 문제없이 추가된다.
- 같은 라인에서 다른 변화가 Pull의 내용과 내 commit내용에 있을 때 충돌이 일어난다.
Current Change는 내 commit내용(R4)
L4는 Pull해서 들어오게 된 내용(L4)
이다.
- Accept Current Change : 내 commit내용으로 바꾸겠다
-> R4 - Accept Incomming Change : Pull로 들어오게 된 내용으로 바꾸겠다
-> L4 - Accept Both Changes : 양 쪽 내용을 모두 쓰겠다
->R4 L4 - Compare changes : 비교해보겠다
아래와 같이 비교하는 창을 띄워준다.
Mergetool이라는 것을 다운받아서 해결할 수도 있다.
1. Accept로 시작하는 셋 중 하나를 고르고 저장한다.
2. Commit
머지 메세지가 적혀있는대로 merge하기 위해서 변경사항병합에서 +을 눌러 스테이징 시킨 후
Commit(+)을 누른다.
3. Push
3-way Merge
두 사용자 u1,u2가 동시에 같은 줄을 수정한다고 하자
두 사용자의 코드의 공통의 조상 base를 기준으로 비교해서 conflict인지 아닌지를 판별한다.
- 변경 사항이 없을 때
base랑 두 사용자의 변경 내용c1 ,c2이 같으면 (base=c1,base=c2)이면 그대로 conflict없이 지나가고 u1,u2의 코드에 그대로 c1,c2를 유지한다 - 한 쪽만 수정했을 때
한 사용자만 c1로 수정하면 base!=c1, base=c2이기 때문에 c1의 코드로 push된다. - 두 사용자 모두 같은 줄에 다른 내용으로 수정했을 때
base!=c1, base!=c2, c1!=c2
->conflict를 만들어서 사용자가 수정하게끔 한다.
'부스트캠프 AI Tech 3기 > 이론 : U-stage' 카테고리의 다른 글
[Day74] Github 특강 2-1 CLI로 로컬 저장소를 사용하기 (0) | 2022.05.06 |
---|---|
[Day36] Github 특강 1-8 HEAD, master, branch (0) | 2022.03.29 |
[Day36] Github 특강 1-6 Git Clone 레포지토리/저장소 복제 (VSCode) (0) | 2022.03.28 |
[Day36] Github 특강 1-5 git push / pull (VSCode) (0) | 2022.03.28 |
[Day36] Github 특강 1-4 로컬 저장소를 Github와 연결하기 (VSCode) (0) | 2022.03.28 |