1번째 줄 : 커밋 내의 변경 내용을 요약
2번째 줄 : 빈 칸
3번째 줄 : 변경한 이유

Git의 '커밋' 작업은 '작업 트리'에 있는 변경 내용을 저장소에 바로 기록하는 것이 아니라 '인덱스'에 파일 상태를 기록(stage - 스테이징) 해야 한다.



내가 pull을 한 후 다른 사람이 push를 해 원격 저장소를 업데이트 한 경우 내 push 요청이 거부된다.

이 경우 병합(merge) 작업을 통해 다른 사람의 업데이트 이력을 내 저장소에도 갱신해야 한다.
1. 수동으로 해결하는 방법

Git은 충돌이 발생한 파일 내용을 위 그림처럼 표시해준다. (이 부분을 직접 수정해 주어야 함)
즉, 파일을 일일이 비교하며 바뀐 점을 찾아서 적용한 후 병합
당연히 "<<<<<<<< HEAD , >>>>>>>>>footer" 같은 충돌기호는 다 지워야 한다.
2. 깃으로 자동 병합
파일의 다른 위치를 수정했다면 깃에서 서로 다른 위치의 소스를 자동으로 병합하기 때문에 문제가 없다.
하지만 실제 개발 환경에서는 여러 사람이 같은 위치의 코드를 수정하기 때문에 자동병합으론 해결 못하는 충돌이 자주 일어남.
이 경우,
git checkout master : 기준이 되는 브랜치로 먼저 이동
git merge feature : 병합당하는_브랜치
명령어를 입력하면 브랜치의 코드가 아래처럼 수정된다.
동일한 곳을 수정했을 경우


아래처럼 수정됨

HEAD가 현재 브랜치이고, 둘 다 수락하거나 둘 중 하나를 수학하면 자동으로 충돌이 해결된다.
선택하고 add, commit 하면 병합이 완료된다.

병합한 브랜치는 (*)로 표시된다!
git branch --no-merged :병합하지 않은 브랜치 조회