본문 바로가기

협업/git

master에서 작업한 경우 해결방안

프로젝트를 시작할때 git을 한번도 써보지 못한 사람들이 저지르는 실수가 무엇일까?

다양한 실수가 있겠지만 가장많이 저지르는 실수는 master에서 작업하는 것이라고 생각한다.

그래서 이런 실수를 한 경우 어떻게 처리하는게 좋을지에 대한 post를 작성해 보았다.

시나리오

내가 소속된 팀은 talk 관련된 모듈을 맡았고, 나는 프로젝트를 처음 시작하였다.

 

프로젝트를 처음 clone한 상태에서 나는 내가 맡은 talk 파트를 작업하였다.

즉, master local branch 에서 내가 맡은 talk 파일을 작업하였다.

 

알고보니 talk 파트는 master_talk 브랜치에서 작업을 하고 있었고

정기적으로 master_talk에서 작업한 내용을 master에 merge request를 날리는 식으로 협업중이었다.

 

내가 작업한 내용을 master_talk 브랜치에 옮겨야 한다.

나는 git을 처음 사용해보아 master에 커밋은 안한채 그냥 작업중이었다.

해결 방안

1. talk_ssj로 나의 local branch를 생성한 후 커밋한다.

  내가 작업한 커밋을 하지 않았는데 다른사람이 작업한 history가 있는 경우

  충돌이 나지 않더라도 stash하지 않는 한 pull을 받을 수 없다.

 

2. master_talk를 origin master_talk에서 pull을 받은 후 merge talk_ssj 한다

 

3. origin master_talk에 push하고 talk_ssj로 이동한다.

 

4. talk_ssj에서 pull origin master_talk를 한다.

히스토리 그래프

이해를 쉽게 하기 위해서 그림을 그려 보았다.

로컬 마스터에 커밋한 경우

만약 Local 마스터에서 작업하다 커밋 했으면 master_talk에서 로컬 master와 merge master하고 push한뒤

local master는 reset --hard HEAD^ 하면 될 것 같다.

 

 

p.s. origin master push는 왠만하면 막혀있기 때문에 시나리오에서 뺐다.

  테스트 안해보고 작성해서.. 틀린부분이 있을거 같은데.. 불안..

'협업 > git' 카테고리의 다른 글

커밋 메시지를 요청하는 git merge  (0) 2020.05.11
git remote branch 가져오기  (0) 2020.05.10
git stash 명령어 활용하기  (0) 2020.05.06
Git - pull request  (0) 2020.05.05
GIT 수정한 것 되돌리기  (0) 2020.05.05