브랜치 변경하고자 하는 브랜치명 오른쪽클릭
파일상태 클릭
스테이지에 올라가지 않은 파일 클릭
돌아가려는 커밋 오른쪽 클릭
초기화
브랜치 확인
현재 브랜치를 기준에서 병합 버튼을 클릭하면
합치려는 브랜치의 커밋을 찾아서 병합해줍니다.
빠른 병합이 간으해도 새 커밋 생성
을 체크하면 병합할때 새 커밋이 생성되어 머지되는 형태로 보입니다.
branch, branch2를 intel이란 브랜치로 병합할겁니다.
그런데 branch가 먼저 merge되면 다음과 같은 형태가 나옵니다.
그리고 branch2가 merge가 되면 이렇게 복잡한형태로 그래프가 나와서 변경내역의 가독성이 많이 떨어집니다.
커밋내역의 가독성을 높이기 위해~ branch2가 intel을 rebase해서 merge해보겠습니다.
branch2로 옮겨가서 intel을 rebase 받습니다.
(intel 커밋내역 선택후 재배치)
rebase가 되어 feature 브랜치 커밋들이 intel 브랜치 커밋내역 위로 올라가는 형태가 됩니다.
이제 intel에서 branch2를 merge하면
merge된 형태가 눈에 잘 보이는 형태로 바뀌게 됩니다.
출처: https://wbluke.tistory.com/26
https://www.slideshare.net/tkaczmarzyk/git-interactive-rebase-94363484
개발하다보니 커밋이 많아졌어요. f2,f3,f4 커밋내역들이 있는데,
단일 커밋으로 합치고싶어요.
그럴땐 위에 보면 현재 브랜치가 branch2이고 커밋이 가장 위에 있죠. 여기서 git rebase -i 5bac1e4
커밋에 나오는 길이가 7인 문자열을shortsha
라고 합니다.
소스트리로는 5bac1e4
로 커밋 로그에서 '5bac1e4'
하위 요소 대화식 재배치 이거 클릭하시면 다음과 같이 나옵니다.
맨 위에 커밋내역 550ddbc
을 클릭하고 이전 것과 합치기 클릭해줍니다.
그러면 f3,f4가 합쳐집니다.
다시 맨 위에 커밋550ddbc
을 클릭하고 이전 것하고 합치기 해주면
f2,f3,f4가 합쳐지게 됩니다.
이제 메시지 편집하고 확인해주고 확인해주면
다음과같이 메시지 편집되고
3개 커밋이 단일 커밋으로 합쳐진것을 확인할 수 있습니다.
https://www.lesstif.com/gitbook/git-squash-commit-24445167.html
https://www.slideshare.net/tkaczmarzyk/git-interactive-rebase-94363484
개발하다보니 커밋이 많아졌어요. f2,f3,f4,f5 커밋내역들이 있는데,
f2,f4,f5만 단일 커밋으로 합치고, f3는 빼고싶어요.
그럴땐 위에 보면 현재 브랜치가 branch2이고 커밋이 가장 위에 있죠. 여기서 git rebase -i 5bac1e4
커밋에 나오는 길이가 7인 문자열을shortsha
라고 합니다.
소스트리로는 5bac1e4
로 커밋 로그에서 '5bac1e4'
하위 요소 대화식 재배치 이거 클릭하시면 다음과 같이 나옵니다.
커밋해시가b6aa675
인 f3를 선택해서 삭제해줍니다.
삭제가 된 상태
이제
커밋해쉬 3b7917d
인 커밋내역 선택후 이전것과 합치기 해줍니다.
interactive rebase
에 나온대로 하시면 됩니다.
만약 rebase시 같은 코드를 수정했다면 충돌이 납니다. 병합해줘야 rebase 가 마무리됩니다.
충돌 병합
확인 눌러주고
코드 에디터로 충돌 해결해줍니다.
https://www.youtube.com/watch?v=yRjc6mmRol4
4:04초에 나온대로
충돌난 위치에 << >> ==
다 제거해주시고 코드를 저장해주세요.
소스트리에서 스테이지에 올라가지 않은 파일에서 충돌처리한 파일을 클릭해줍니다. (git add)
HEAD를 클릭해주시고 재배치 선택
그러면 재비치 진행중 모달 뜨고
여기서 재비치 계속
선택해줍니다.
충돌이 있을때마다
충돌해결이 끝나고 새로운 커밋 메시지를 작성해줍니다.
rebase가 마무리되면
제거한 커밋을 제외한 f2,f4,f5가 하나의 커밋으로 합쳐집니다.