최신 상태


먼저 원격 저장소에 푸시하려면 자신의 로컬 저장소를 최신 상태로 유지해야 합니다.
즉, 자신의 저장소가 원격 저장소의 커밋보다 최신이어야 한다는 의미입니다. 최신이라는 의미를 좀 더 구체적으로 알아봅시다.


커밋의 순서와 상태


누군가 내 저장소보다 먼저 커밋하여 새로운 커밋으로 서버를 갱신했습니다.
푸시는 서버의 마지막 커밋과 푸시되는 커밋병합합니다.

하지만 나는 간발의 차이로 갱신된 서버 정보를 가지고 있지 않습니다.
이때 내 커밋은 서버의 최신 커밋보다 늦은 커밋으로 밀리게 됩니다.


push 거부


커밋이 순차적이지 않을 때 깃은 푸시 동작을 거부합니다.
푸시 동작이 거부되면 pull 또는 patch 작업으로 자신의 로컬 저장소를 갱신해 주어야 합니다.

갱신 후에 다시 푸시합니다.


예시


예를 들어 보겠습니다. 개발자 1, 개발자 2가 함께 코드를 개발합니다.

  • 개발자1 개발자 1이 코드를 수정했고, 개발자 2도 동시에 코드를 수정했습니다.
    그리고 개발자 1이 코드를 푸시하여 원격 저장소를 갱신했습니다.

  • 개발자2 이후 개발자 2가 자신의 코드를 푸시하면 오류가 발생합니다. 개발자 1이 원격 저장소를 먼저 갱신하여 커밋 +1 상태가 되었기 때문입니다.
    따라서 개발자 2의 로컬 컴퓨터는 개발자 1이 갱신한 상태로 자신의 저장소를 pull 명령어로 업데이트한 후 푸시할 수 있습니다.