Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

기록

05_Merge 본문

공부/Git

05_Merge

aoieuo 2020. 9. 30. 16:58

변경 이력의 통합

변경 이력 병합(Merge)하기

merge

내가 끌어온 저장소가 최신 버전이 아닌 경우, 즉 내가 pull을 실행한 후 다른 사람이 push를 하여 원격 저장소를 업데이트 해버린 경우에는 내 push 요청이 거부되어 버린다.

이런 경우 병합(merge)라는 작업을 진행하여 다른 사람의 업데이트 이력을 내 저장소에도 갱신해야한다. 만약 병합하지 않은 채로 이력을 덮어쓰게 되면 다른 삶이 push한 업데이트 내역이 사라져 버리기 때문이다.



충돌 해결하기

위에서 설명한 것처럼 merge 기능은 Git에서 변경한 부분을 자동으로 통합해 주는 기능이다. 그러나 경우에 따라 자동으로 병합할 수 없는 경우도 있다.

바로 원격 저장소와 로컬 저장소 양쪽에서 파일의 동일한 부분을 변경한 경우다. 이 경우는 두 변경 내용 중 어느 쪽을 저장할 것인지 자동으로 판단할 수 없기 때문에 충돌이 발생한다.

충돌 메시지

Auto-merging git-tutorial.txt
CONFLICT (content): Merge conflict in git-tutorial.txt
Automatic merge failed; fix conflicts and then commit the result.

git status를 하면 충돌이 일어난 파일을 찾을 수 있다.

You have unmerged paths.
  (fix conflicts and run "git commit")
Unmerged paths:
  (use "git add <file>..." to mark resolution)

          both modified:      git-tutorial.txt

충돌 파일을 열어보면

<<<<<<< HEAD
가영이는 밥부
=======
가영이는 바보
>>>>>>> origin/master

HEAD부터 중간 나뉜 곳까지가 git pull 되기 전 내가 가지고 있던 코드, 그 다음 내용이 병합하려는 대상인 origin/master 이다.

둘 중에 안 쓸 코드를 지우거나 아님 둘 다 지우고 새로 쓰거나 알아서 하면 된다.

저장하고 나간 뒤 다시 git pull을 해주면 된다.

마지막으로 다시 add - commit - push를 해주면 끝!


'공부 > Git' 카테고리의 다른 글

04_Remote  (0) 2020.09.30
03_Repository  (0) 2020.09.30
02_Commit  (0) 2020.09.30
01_Git  (0) 2020.09.30
Comments