마스터에서 따온 베이스와 일어난 커밋 두개(f1, f2)를 병합하여 새로운 커밋을 만들어 이를 마스터에 적용시킨다.
얼핏 보기에 별 문제가 없어보일 수 있지만, 이런식의 머지 방식을 가지게되면 문제가 2가지 발생한다.
이를 각각 해결하기 위해 git rebase(1)와 squash(2)를 각각 쓰게된다.
그림을 해설해 보자면 다음과 같다.
rebase와 squash는 다음과 같이 진행한다.
마스터를 가장 최근의 버전으로 땡긴다.
git pull
리베이스 하고싶은 브랜치에서 다음 명령어를 입력한다.
git rebase -i master 브랜치명
내가 커밋을 2번이상 진행했다면 열리는 대화창에는 다음과 같은 내용이 보일것이다.
pick asdfsfdasdfasdfasdfasdfasdf
pick asdfasdfasdfsdfsdf
pick asdfsadfasdfasdfasdfasdf
(화면을 캡쳐하지못해 asd로 대충 표현해보았다;)
pick이후의 내용은 각각의 commit을 의미한다. 결국 저렇게 pick이 3줄이 나왔다면, 내가 3번의 커밋을 했다는 뜻이며, 이를 하나로 줄여주어야 한다.
머지할 내용의 첫 커밋만 pick으로 둔 후 나머지는 s로 바꾸어준다.
pick asdfsfdasdfasdfasdfasdfasdf
s asdfasdfasdfsdfsdf
s asdfsadfasdfasdfasdfasdf
Ctrl+X
를 눌러 나가주면 커밋메시지를 정리할 수 있는 창이 뜬다. 이 단계에서 내가 남기고싶은 커밋 메세지를 짧게 남겨준 후 다시 Ctrl+X
를 눌러준다
만약 이 과정에서 Conflict가 발생하지 않았다면 성공한것이므로 작업이 끝났다면 푸시하면 된다.
만약 컨플릭트가 났다면, 충돌이 난 후 git rebase --continue
를 눌러 다시 진행해준다.
만약 내가 브랜치를 push한 시점과 rebase한 시점사이에 merge가 일어났다면, 내 브랜치는 이전의 푸시로 인해 push할 목표브랜치를 이전 시점으로 기억하고 있다. 이 경우에는 force push (강제푸시)를 사용해 푸시를 진행해야한다.
git push -f origin branchname
위코드에서의 2차 프로젝트가 끝이 났다. 1차때는 길을 헤메이느라 정신이 없었다면 2차는 나의 머릿속 기대치와 내 역량의 차이에서 오는 괴리때문에 힘이 들었던 것 같다. 아무튼간 2차 프로젝트에서 느꼈던 점들을 글로 짧게 나마 정리해서 남기고자 한다. 1. 커뮤니케이션 - 분명 사람은 각자의 말하는 법을 가지고 있다. 나의 경우에도 회사생활에서 나의...
관계형 데이터의 모델링 이번주에 내가 했던일은 결국 모델 설계, 모델들 간의 관계설정, 그리고 크롤링이다. 이를 기억에 남기고자 글을 적는다. 관계 파악하기 및 그에따른 django코딩 - 이번 프로젝트는 air-bnb 클론이다. 이에 맞추어 데이터간의 관계를 알아보고자 한다. 1. 1 to 1 : 회원(User)과 호스트(Host)의 관계 -...
git rebase & squash 1. 목적 - 그동안 내가 써온 git의 기본적인 merge 방식은 다음과 같다 스크린샷, 2019-11-17 22-00-11.png - 마스터에서 따온 베이스와 일어난 커밋 두개(f1, f2)를 병합하여 새로운 커밋을 만들어 이를 마스터에 적용시킨다. - 얼핏 보기에 별 문제가 없어보일 수 있지만, 이런식의...
CSV란 무엇인가 - CSV는 CSV(영어: comma-separated values)는 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다.(위키피디아) - 필드에서 이미 눈치를 챘을지도 모르겠지만, 파이썬을 통해 이 python을 통해 내가 필요한 컬럼 값을 크롤링으로 긁어오는 것이 가능하며, 이를csv로 저장하는것 또한 가능하다 - ...
List Comprehension 이번주 프로젝트를 진행하면서, 리스트 컴프리헨션을 써야 할 경우가 많았고 앞으로도 많을 것 같아 기억할 겸 포스팅을 올린다. List Comprehension은 무엇이냐? - 리스트를 좀더 쉽게, 내 입맛대로 구성하기 위한 방법이다. 간단히 말하면 그렇고, 좀더 길게 설명하자면, 하나의 sequence에서 지정된 ...