로그인 파일을 작성 중
어쩔 수 없는 사정으로 중단하고
집으로 가서 마저 작업하는 경우가 생길 것이다.
이때 commit을 해두어야 다른 컴퓨터에서 마저 할 수 있기 때문에
하나의 파일을 만들기 위한 log가
여러 개가 생길 수 있다.
예쁘지 않은 log를
rebase로 정리가 가능하다.
이때 rebase의 squash 옵션을 사용해준다.
squash는 찌그러트린다는 말, 즉 압축한다는 말이다.
log를 찌그러트릴 때는 원하는 log의 두 끝점 중
가장 과거의 log로 압축해야 한다.
위 브랜치의 3가지 로그인 log의 경우에는
아래 두 개의 log를 날리고
코드를 가장 과거인 로그인 완료 log로 모으는 것이다.
git rebase -i HEAD~3
HEAD가 가리키는 곳에서 3개의 log를 rebase 하는 것이다.
실습해보자.
4개의 파일과 log를 만들었다.
git rebase -i HEAD~3
하면 이런 vi에디터 창이 뜰 것이다.
수정을 하기 위해서는 i키를 눌러준다.
rebase의 다양한 옵션들 중 drop을 먼저 사용해볼 것이다.
drop은 d로 사용이 가능하고
파일을 날려버릴 때 사용한다.
i키를 눌러 수정 모드가 되면 원하는 파일에 pick을 d로 바꿔준다.
그리고 ESC버튼을 누르고 :wq를 입력해주면
저장하고 vi에디터가 종료된다.
내 파일에 로그인완료.txt 파일이 없어진 것을 볼 수 있다.
drop으로 날려버린 파일을
복구하기 위해서는
reflog를 이용해 이전 log로 돌아가 주면 된다.
다음 rebase의 옵션은 reword이다.
r로 사용이 가능하고 log의 이름을 수정할 수 있다.
마찬가지로 i키를 눌러 수정 모드로 바꿔준 후
pick을 r로 수정하고
ESC -> :wq 엔터키를 누르면
log를 수정할 수 있는 창이 뜬다.
이 창에서도 i키를 눌러 수정모드로 바꿔준 후
원하는 이름으로 수정하고
ESC -> :wq 엔터키를 눌러 종료해준다.
그리고 log를 확인해보면
설정한 log로 바뀐 것을 볼 수 있다.
이제 중요한 squash를 사용해보자.
git rebase -i HEAD~3
pick이 적힌 log로
s(squash)가 적힌 log들이 합쳐지는 것이다.
적혀있는 모든 로그들을 지워주고
원하는 commit log를 설정해준 다음
ESC -> :wq 엔터키를 쳐서 종료해준다.
성공적으로 squash 되어
다른 log들은 사라지고 하나의 log만 남아있다.
[출처]
[무료] 지옥에서 온 관리자 Git - 인프런 | 강의
“소규모 협업을 통해 프로젝트 개발을 하고 싶은데 어떻게 해야 할지 모르겠어요!” “취업을 앞둔 취준생인데 Git을 몰라요!” 취준생, 주니어 개발자 등 프로그래머라면 꼭 알아야 하는 Git에
www.inflearn.com