본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 29.3: 강제 (force) push 수행하기

가끔씩, 사용자의 로컬 변경사항들이 원격 변경사항들과 호환되지 않는 경우 (즉, 원격 브랜치를 fast-forward 시킬 수 없다거나, 혹은 원격 브랜치가 로컬 브랜치의 직계 조상 (direct ancestor) 이 아닌 경우 등) 사용자의 변경사항을 push 하는 유일한 방법은 force push 를 이용하는 것이다.

git push -f

혹은 아래와 같이 수행한다.

git push --force

중요한 내용

이 명령어는 원격 저장소의 내용이 로컬 저장소의 내용과 일치하도록 원격 저장소의 변경사항들을 강제로 덮어쓰게 될 것이다.

주의: 이 명령어의 사용으로 인해 원격 저장소에 커밋들이 유실되는 현상이 발생할 수 있다. 더욱이, 해당 원격 저장소가 다른 사용자들과 공유되는 상황이라면 force push 를 수행하는 것은 더더욱 지양하여야 하는데, 이는 다른 사용자들의 git history 상에는 덮어쓰기가 수행된 커밋 정보가 포함되어 있을 수 있기에, 각 사용자들의 작업이 원격 저장소 내용과의 동기화가 끊어지게 만드는 결과가 초래되기 때문이다.

대략적인 규칙을 만들어 본다면, 아래와 같은 경우에만 force push 를 수행하도록 한다:

  • 덮어쓰기 (overwrite) 하려는 변경사항을 현재 사용자 외에 다른 사람들이 pull 하지 않은 경우
  • force push 를 수행한 이후, 모든 사용자들로 하여금 새로운 사본을 clone 하도록 하고 그들의 변경사항을 새로운 사본 기반으로 재적용 하도록 한다 (다른 사용자들의 극렬한 반발을 야기할 수 있음에 유의하라).

역주: 로컬 저장소와 비교했을 때, 원격 저장소에 새로운 커밋이 추가되어 있는 경우 덮어쓰기 작업을 취소시키는 --force-with-lease 옵션을 사용하는게 더 안전합니다. 더 자세한 설명은 여기 를 참고하세요

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형

'번역 > Git Notes for Professionals' 카테고리의 다른 글

29.5: 기본 push 동작 변경하기  (0) 2020.01.20
29.4: tag 를 push 하기  (0) 2020.01.20
29.2: Push 작업  (0) 2020.01.16
29.1: 특정 object 를 원격 브랜치로 push 하기  (0) 2020.01.15
29: Push 하기  (0) 2020.01.15

+ Recent posts