[Github] 강제 push 수행하는 방법 – force push

분명 Commit도 했고 이제 Push 해서 갱신하면 끝인데 왜 Push가 안되지..?

Git을 사용하다 보면 강제로 Push수행하고 싶은 경우가 있습니다. 

force push라고 하는 이 방법은 여러분들이 분명 코드를 바꿨는데 왜 push가 안되지? 하는 상황에서 사용하면 좋습니다.

이런 경우가 생기는 이유는 로컬 변경사항들이 원격 변경사항들과 호환이 안돼서 발생하는 경우입니다.

이럴 때는 force push를 사용하면 됩니다.

git push -f

git push --force

둘 다 같은 기능을 하는 명령어입니다. 

주의 사항이 있습니다. 

로컬 저장소의 내용을 원격 저장소에 강제로 덮어쓰게 된다는 점입니다. 즉, 원격 저장소에 저장된 Commit 내용 중 일부가 유실 되는 현상이 발생되곤 합니다. 로컬에 있는 코드가 확실한 최신 버전인지 꼭 확인이 필요합니다. 

특히 협업을 하고 있을 때는 무조건 동료 개발자에게 해당 명령어를 쓴다고 공유를 해야 합니다. 잘못하면 다른 사람들의 코드가 사라질 수 있기 때문입니다.

아래와 같은 상황에서만 force push를 사용합시다.

  • 덮어쓰기 하려는 변경사항을 현재 사용자 외에 다른 사람들이 pull 하지 않은 경우
  • force push를 수행한 이후, 모든 사용자로 하여금 새로운 사본을 pull 하고 그들의 변경 사항을 새로운 버전으로 재적용한다고 합의가 된 경우

이렇듯 몇 가지 경우를 제외하고는 force push를 사용하지는 않습니다. 다만, 로컬에 있는 걸 무조건 올릴 때 사용하면 좋을 것 같네요. 특히 협업을 할 때는 상황 공유 후 사용하시면 됩니다.

그 외에 –force-with-lease 옵션을 통해 조금이라도 안전하게 덮어쓰는 방법도 있다. 

여기서 –force-with-lease는 특정 브랜치에 로컬 데이터를 덮어쓰기를 하기 전 누구도 수정하지 않았다는 가정하여 진행되는 덮어쓰기다. 누군가 원격 브랜치를 수정했다면 실행되지 않는다. 이를 통해 다른 사람의 작업을 날리는 불상사를 막을 수 있다.

함께 보면 좋은 글

branch와 merge 사용 방법

참고

https://nochoco-lee.tistory.com/226

Leave a Comment