'특정 파일만 stash로 보관'에 해당되는 글 1건

  1. 2025.02.03 특정 파일만 remote의 변경 사항을 로컬에 merge

로컬의 A 파일을 수정 중 (아직 커밋을 할 순 없다)

원격의 A 파일이 수정 됨

이때, A 파일을 merge하기 위해서 로컬에서 작업 중인 많은 소스들을 stash에 담아야 하는데...

merge하고자 하는 파일만 stash 후 merge 진행 방안

 

로컬의 특정 파일만 stash로 진행

git stash push -m "A.java stash" -- .\src\package\A.java

-m "message" -> stash 내용을 구분하도록 메시지 추가

-- 파일명 -> 특정 파일만 stash

git stash list

 

remote의 최신 변경 사항을 가져오고

git fetch origin

 

stash한  파일을 remote 버전으로 덮어쓰고

git checkout origin/develop -- .\src\package\A.java

 

원격의 변경된 내용을 확인하고 (출력된 정보가 없으면 변경 사항이 없는 거)

git diff .\src\package\A.java

 

stash 파일로 병합 진행을 해야 하는데, pop과 apply의 옵션으로 나누어지고

pop stash 파일이 삭제가 되고
충돌이 발생할 경우 직접 해결해야 하며
apply stash 상태를 유지하고

 

그래서, 안전하게

git stash apply

를 선택했는데, 젠장... 충돌!

 

충돌 해결 방안은 3가지 중 직접 해결하는 방법으로 선택(이 아닌 필수일 듯)

- vs code에서 해당 파일의 충돌 부분이 표시(<<< HEAD, ====, >>> stash)가 되니 원하는 코드로 수정 후 저장

- cli에서 원격 버전으로 덮어쓰기인데, stash 내용을 무시하는 방법  (어휴.. 알아보지도 말자)

- cli에서 stash 변경 내용 유지인데, 로컬 변경 사항을 무시하는 방법 (어휴.. 알아보지도 말자x2)

 

vs code를 통해서 충돌 해결을 하면, 이 파일은 자동으로 staged changes 영역으로 이동을 하게 되어

아직, 커밋 단계가 아니라서 changes 영역을 내리고자

git restore --source=HEAD --staged .\src\package\A.java

 

Posted by 테리
: