매일 매일 미라클 코딩

Github 과 SourceTree (3): 커밋과 푸쉬사이에 다른 푸쉬가 일어난다면? 본문

Project

Github 과 SourceTree (3): 커밋과 푸쉬사이에 다른 푸쉬가 일어난다면?

뚜벅-뚜벅 2021. 3. 15. 00:09

서로 다른 사용자와 저장소를 공유하는 경우

이제 소스트리에서의 commit, push, pull 과정을 이해하였다. 그런데 여럿이서 작업하다보면 한 사람의 커밋과 푸쉬 사이에 다른 사람의 커밋과 푸쉬가 끼어드는 상황도 있지 않을까? 동기화 작업이 아니니 말이다

 

이를 확인하기 위해 깃헙 본계정과 부계정을 사용해 보았다.

 

현재 본계정은 - hong_bowang 저장소와, 제2의 계정은 - Jieun_bowang이라는 로컬 저장소와 연결되어있다.

본계정인 Jieun_h5ng 에서 보왕삼매론 TXT를 생성한뒤, 부계정으로 한글 글귀를 추가하였다.

 

 

 

master 옆에 1이라는 숫자는 내가 github 원격저장소보다 한 버전 위라는 뜻이다. 즉 서버에 push할 내용이 있다는 뜻.

 

위 경우 commit 만 진행하고 push를 하지 않았기 떄문에 jieun_bowang이라는 로컬저장소에만 변경사항이 존재하는 상태이다. 따라서 hong_bowang 에 가면 아래처럼 업데이트할 내용이 뜨지 않는다.

 

 

 

hong_bowang 화면에는 아무 업데이트도 없고, 최신 commit 한 jieun_bowang 탭에 push를 하라는 알림 1이 떠있는 것을 알 수 있다. 이 때 hong_bowang 로컬저장소에서 '보왕삼매론.txt' 아래에 한글 글귀를 입력하고 commit에 push 까지 진행해버리면 어떻게 될까?

 

 

 

jieun_bowang에서 먼저 커밋했던 내용을 원격저장소에 push하려고 하니 이런 화면이 나타난다.

원격저장소에 먼저 업데이트 된 내용이 있으니 pull 먼저 실행하고 push 하라는 내용.

 

아래는 각각 hong과 jieun 의 업데이트 상태이다.

현재 원격저장소는 왼쪽, 즉 나중에 커밋했으나 먼저 푸쉬한 내용으로 업데이트 되어있다

 

PULL 을 실행해 보았다.

hong에서 최신 푸쉬한 파일로 덮어써지면서 jieun이 커밋한 한글 글귀는 사라질 줄 알았다

 

그런데

 

hong에서 업데이트 한 내용이 로컬 저장소 jieun의 변경 사항에 더 해져있다.

간단히 말해

A에서 pull("나") A에서 commit("나") B에서 pull("나") B commit("나") B push("나") A pull("")

먼저 push된 내용을 pull해와도 나의 커밋내용에 영향을 미치지 않는 것이다. 

 

위아래 둘다 한글 글귀가 붙은 모양

이 상태로 commit하니 push해야한다는 알림의 숫자가 2→3으로 늘어남

 

최종적으로 jieun을 push해준 결과, 깃헙(외부저장소)의 파일이 jieun의 변경사항이었던 위쪽 한글 글귀와

hong의 변경사항이었던 아래쪽 한글글귀가 모두 적용된 txt 파일로 최종 변경되었음을 알 수 있다.

아직 hong_bowang은 아래 글귀만 추가되어있는데 pull을 해오지 않아서 이다.

언제나 pull 부터 해와야한다는 교훈