개요
PC1과 PC2 사이를 이동하며 프로젝트를 작업해야 할 때, 커밋하기에는 현재 작업물이 애매한 경우 임시로 저장 후 이동하는 상황에 이용할 수 있는 방법이다.
PC1이 임시로 변경 사항을 저장하고 옮겨야 하는 PC, PC2가 옮겨야 하는 PC다.
(PC1) 임시로 커밋 및 푸시
1
2
3
git add .
git commit -m "DEV: 250811"
git push origin main
임시로 커밋을 작성후 푸시한다.
개인 프로젝트라면 main에 직접해도 상관없지만 협업 중이라면 개인 branch를 따로 파는 것이 좋다.
(PC2) git reset
1
2
git pull
git reset --soft HEAD~1
pull한 후, 가장 마지막 커밋을 제거하고 스테이징 상태로 되돌린다.
reset의 각 모드 차이는 다음과 같다.
--soft는 스테이징 상태로 되돌린다. (git add .실행 후 시점)--mixed는 스테이징도 해제한다. (git add .이전 시점)--hard는 내역을 해당 상태로 되돌리고 이후 변경 사항은 모두 삭제한다.
따라서 현재 작업에서는 --soft 또는 --mixed를 이용한다. 모드를 따로 명시하지 않으면 --mixed 모드가 적용된다.
(PC2) git push
1
git push --force
PC로 변경사항을 이동했으니 이제 원격 저장소에 임시 커밋을 제거해야 한다. 그런데 과거로 되돌린 상태에서 push를 수행하므로 git은 기본적으로는 잘못된 동작이라 생각해 거부한다.
위에서도 말했듯 git reset, git push --force 같이 협업 중이면 웬만해서 사용하면 안되는 명령어니, 매우 조심스럽게 사용해야 한다.