변경 이력의 통합
<변경 이력 병합(Merge)하기>
내가 가져온 저장소가 최신 버전이 아닌 경우,
즉 pull해왔는데 내가 변경하는 것과 같은 파일을 누군가 이미 push하여 원격 저장소가 업데이트 된 경우에는 내가 push를 하면 거부되어 버린다.
이럴 때 병합(merge)해야 한다.
병합(merge) : 다른 사람의 업데이트 이력을 내 저장소에 갱신하는 것. 병합하지 않은 채 변경 이력을 덮어쓰면 다른 사람이 push한 업데이트 내역이 사라져 버린다.
병합 기능을 이용하면 Git이 현재 브랜치에 알아서 변경 사항을 통합해 준다.
<충돌 해결하기>
병합(merge, Git에서 변경한 부분을 자동으로 통합해주는 기능)이 되지 않는 경우도 있다.
원격 저장소와 로컬 저장소 양쪽에서 파일의 동일한 부분을 변경한 경우에는 두 변경 내용 중 어떤 것으로 저장할지 판단할 수 없어 충돌이 일어난다.
Git은 충돌지점을 표시해준다. 그 부분을 직접 수정한 후 다시 커밋하면 된다.
(파일 열어봤을 때 ================윗 부분이 로컬 저장소, 아랫 부분이 원격 저장소의 변경내용)
실습
<충돌상태 만들기>
“tutorial”과 “tutorial2”의 sample.txt 내용을 서로 다르게 하여 저장한 후 커밋한다.
“tutorial2”의 push를 진행한다.
이후 “tutorial”의 push를 진행하면 오류가 발생하며 거부(rejected)당한다.
“tutorial”의 sample.txt 파일을 열어서 Git에서 충돌이 발생한 부분을 변경한다.
다시 커밋하면 두가지의 변경 사항이 통합됌. 이제 push할 수 있음.
'Programming > git' 카테고리의 다른 글
[Git] 저장소 공유 (0) | 2020.07.13 |
---|---|
[Git] Git의 기본 (기본 개념, 설치 및 설정) (0) | 2020.07.13 |