매일 매일 미라클 코딩
Github 과 SourceTree (3): 커밋과 푸쉬사이에 다른 푸쉬가 일어난다면? 본문
서로 다른 사용자와 저장소를 공유하는 경우
이제 소스트리에서의 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 부터 해와야한다는 교훈
'Project' 카테고리의 다른 글
Github과 SourceTree(2): Pull 부터 Push 까지 (0) | 2021.03.14 |
---|---|
Github 과 SourceTree (1): 로컬 저장소와 원격 저장소 연결하기 (0) | 2021.03.14 |