같은 파일에 대해 서로 추적하지 못하는 변경사항이 생기면 conflict를 발생시킨다. 단순 추가는 conflict를 발생시키지 않는다.
병합의 기준은 항상 HEAD이며, 1개의 브랜치만 해당됨을 명심!
pull: 원격을 HEAD로 병합
push: HEAD를 원격에 병합
원격 레포 -> Remote 디렉토리로 최신 버전을 가져와 Local과 비교해 변경이 있는지 알려준다. (실제 병합은 X)
사용
git fetch <원격 레포명>
fetch의 과정

현재 HEAD로 원격 브랜치를 병합하는 명령어.
- 원격레포 -> Remote로 fetch 진행
- remote에 불러와진 원격 브랜치와 local의 HEAD를 비교하여 merge한다.
사용
git pull <원격 레포명> <가져올 원격 브랜치명>
주의사항
명령어에 명시된 브랜치명은 가져올 원격 브랜치의 이름이다.
여러개의 브랜치를 병합하는게 아니라 지정한 브랜치끼리만 병합한다.
git pull만 사용시 현재 HEAD에 Stream이 연결된 원격 브랜치를 병합한다.
(스트림 확인은 git branch -vv)스트림이 연결되어있지 않은 브랜치에 HEAD가 위치한 상태에서 pull을 사용하면 HEAD와 스트림이 연결된 원격 브랜치가 없기 때문에 에러발생
pull의 과정

git pull(위험)

git pull <원격 레포> <!HEAD인 원격 브랜치>(위험)

git pull <원격 레포> <HEAD와 일치하는 원격 브랜치>(적절)

현재 HEAD를 원격 브랜치로 병합하는 명령어.
바로 원격 브랜치에 변경사항이 반영되기 때문에 브랜치를 분기하여 push하고 이를 PR로 만들어 검토 후 main 브랜치에 merge한다.

pull과 마찬가지로 같은 브랜치로 push를 해야 바람직 하다.
만약 원격에 HEAD와 같은 브랜치가 없다면 -u옵션으로 스트림을 만들어 원격에도 HEAD브랜치를 추가해준다.
git push(위험)

git push <원격 레포> <!HEAD인 원격 브랜치>(위험)

git push <원격 레포> <HEAD와 일치하는 원격 브랜치>(적절)

git push -u <원격 레포> <HEAD와 일치하는 브랜치명>(적절)
