최신 상태
먼저 원격 저장소에 푸시하려면 자신의 로컬 저장소를 최신 상태
로 유지해야 합니다.
즉, 자신의 저장소가 원격 저장소의 커밋보다
최신이어야 한다는 의미입니다. 최신이라는 의미를 좀 더 구체적으로 알아봅시다.
커밋의 순서와 상태
누군가 내 저장소보다 먼저 커밋
하여 새로운 커밋으로 서버를 갱신했습니다.
푸시는 서버의 마지막 커밋
과 푸시되는 커밋
을 병합
합니다.
하지만 나는 간발의 차이로 갱신된 서버 정보를 가지고 있지 않습니다.
이때 내 커밋은 서버의 최신 커밋보다 늦은 커밋
으로 밀리게 됩니다.
push 거부
커밋이 순차적이지 않을 때 깃은 푸시 동작을 거부
합니다.
푸시 동작이 거부되면 pull
또는 patch
작업으로 자신의 로컬 저장소를 갱신해 주어야 합니다.
갱신 후에 다시 푸시합니다.
예시
예를 들어 보겠습니다. 개발자 1
, 개발자 2
가 함께 코드를 개발합니다.
-
개발자1
개발자 1이 코드를 수정했고, 개발자 2도 동시에 코드를 수정
했습니다.
그리고 개발자 1이 코드를 푸시하여 원격 저장소를 갱신했습니다.
-
개발자2
이후 개발자 2가 자신의 코드를 푸시하면 오류
가 발생합니다. 개발자 1이 원격 저장소를 먼저 갱신하여 커밋 +1
상태가 되었기 때문입니다.
따라서 개발자 2의 로컬 컴퓨터는 개발자 1이 갱신한 상태로 자신의 저장소를 pull 명령어로 업데이트한 후 푸시
할 수 있습니다.
깃교과서
버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!