앞서 백업에서 했던 작업을 했고, 이제 하나의 원격레파지토리를 두 개의 로컬레파지토리에서 사용한다고 해보자.

 

원래라면 pull -> work -> commit -> push를 해야하지만

 

만약에 사용자a가 pull을 하지 않고 work를 했고, 사용자b가 pull하고 나서 work하고 push를 했다고 생각해보자.

 

이때, 사용자a가 push를 한다면 rejected될 것이다. pull하고 나서 push하라고 에러메시지가 뜬다.

 

그래서 pull을 하게 되면 사용자a,b가 같은 파일의 같은 코드를 수정했었기때문에 conflict가 발생하고 이를 해결한 후에 push를 해주면 문제가 없다.

 

그러면 사용자a가 커밋한 버전, 사용자b가 커밋한 버전, 둘을 병합한 버전으로 log에 기록된다.

 

 

추가.

git status를 통해서 origin이 가리키는 버전과 나의 로컬의 버전을 비교할 수 있다.

origin/master VS HEAD/master

 

추가.

git fetch를 사용하면 origin/master만 업데이트되고 로컬은( head는) 업데이트되지 않는다.

git pull == git fetch + git merge origin/master

git pull == git fetch + git merge FETCH_HEAD

+ Recent posts