여러 작업자와 각 로컬 브랜치를 따서 작업하고 master/stagin/dev 인 브랜치에 최종 소스 커밋을 하게 되는데, 

내가 작업중인 브랜치는 master/stagin/dev과 다르게 최신화나 커밋이 더뎌 push를 하거나, 다른브랜치로 checkout하게 되면 에러가 발생하게 된다.

 

이거를 시도 하다가 작업한거 다 날려보고.. 뻘짓을 오지게 했다.

 

방법

1. 최신화 되어있는 브랜치로 넘어오기

git checkout [base브랜치]    -> 항상 최신화 되어있는 브랜치로 넘어가기
git fetch                           -> 현재 브랜치에서 최신화 하기  
git pull origin [base브랜치]   -> FETCH_HEAD 에 [base브랜치]명으로 담기 

 

2. 적용할 대상 브랜치로 넘어가기

git checkout [적용할브랜치]            -> 최신화할 브랜치로 넘어가기
git stash                                     -> [적용할브랜치]에서 현재 작업한 내용 저장
git reset --hard origin/[base브랜치]   -> [base브랜치] 상태로 덮기
git stash apply                              -> stash로 저장된 [적용할브랜치]의 내용을 apply로 머지
git commit -am "stash 목록저장용"    -> 여러사람이 작업하다보니 한파일에 겹칠수도 있어 진행

- git reset --hard origin/브랜치 이거슨.. 필히 조심해야한다.. 

  앞서 git stash / git stash save 를 하지 않은채 하게 된다면.. 내가 작업한 내용들 다 날리게 되는 끔찍한 상황이.......

 

- git stash applygit stash pop 을 써도 되지않나 해서 사용해봤는데.. 겹치는 부분은 기존꺼랑 새로운거랑 둘다 날라가버리거나 기존거만 남거나 해서 안전하게 apply로 머지할 내용 확인하고 머지하는게 나은거 같다.

 

- git commit -am "stash 목록저장용"를 하지 않고 git pull을 해보면,

error: Pulling is not possible because you have unmerged files. 

에러를 뱉어내는데, git commit -am를 진행하고 다시 git pull을 해보면 정상 처리 된다.

 

 

3. 적용할 대상 브랜치에서 작업한거 올리기

git add .
git commit -m "작업내용"
git push

 

 

 

 

728x90

+ Recent posts