commit은 잘게 쪼갤수록 좋다!! 라는 말을 알고계신가요?
하지만 실제로 구현을 할때 코드를 적고 commit을 하고 또 코드를 적고 이러기 쉽지 않습니다.
흐름이 끊기는 느낌이랄까?ㅜㅜ
그래서 저도 지금까지 한개의 커밋안에 여러가지 내용이 들어가 있었는데요.
최근에 이미 저장된 커밋을 여러개의 커밋으로 나누는 방법을 알게 되었습니다!!
commit 통째로 하기
일단 커밋을 통쨰로 여러개 만들어 보겠습니다.
$ echo first > first.txt
$ git add .
$ git commit -m"first commit"
$ echo second > second.txt
$ git add .
$ git commit -m"second commit"
$ echo third > third.txt
$ echo fourth > fourth.txt
$ echo fifth > fifth.txt
$ git add .
$ git commit -m"third,fourth,fifth"
이런식으로 파일을 만들고 커밋하면 총 세개의 커밋이 쌓입니다.
하지만 여기서 third,fourth,fifth 각각의 파일을 나누어서 커밋작성을 하고 싶을때가 있잖아요?(있어야 합니다..!)
그러면 이렇게 하면 됩니다!
일단 먼저 rebase를 해줍니다.
$ git rebase -i HEAD~2
rebase의 i옵션을 이용해서 HEAD의 부모를 선택합니다.
i는 interactive의 약자로 리베이스할 커밋의 리스트를 수정한다는 뜻입니다.
rebase의 i옵션은 쉽게 말해서 "해당 시점 커밋의 역사를 새로쓴다!" 라고 생각하시면 쉽습니다!!
이렇게 하면 아래와 같은 화면이 나옵니다.
HEAD의 부모부터 두개의 커밋이 보이고 아래에 여러 옵션들이 나와있죠?
여기에서 수정하고 싶은 커밋을 edit으로 바꾸시면 됩니다.
이런식으로 edit으로 바꾸신 다음에 저장하고 나가면!
아래와 같은 화면이 뜨는데
이제 커밋을 하기 이전으로 되돌아 가야합니다. 그래야 새로운 커밋을 남길 수 있겠죠?
아직은 수정하고 싶은 커밋이 남아있죠?
이제
$ git reset HEAD^
를 하게 되면 second로 이동하게 됩니다.
git log를 보시면 우리가 수정하고 싶은 커밋이 없어진 걸 볼수 있죠?
그럼 이제 똑같이 add와 commit을 진행해주면 됩니다!!
$ git add third.txt
$ git commit -m"third"
$ git add fourth.txt
$ git commit -m"fourth"
$ git add fifth.txt
$ git commit -m"fifth"
이렇게 파일을 나누고 커밋을 남겨주게 되면
짠!! 이렇게 파일을 분리해서 커밋을 새로 만들었습니다.
이제 rebase를 완료 해도 되니 --continue옵션을 통해 rebase 를 끝내주겠습니다!!
이렇게 해주고 나면
rebase 가 끝나고 나서도 커밋이 수정된게 보일겁니다!!
이렇게 커밋쪼개기를 해봤습니다!!
+ 여기서 플러스!!
만약 파일별로 커밋을 나누지 않고 줄별로 커밋을 나누고 싶다면?
일단 number.txt 라는 파일에 six가 먼저 커밋되고
이후에 seven과 eight을 추가했습니다!!
위의 상황에서 seven줄따로 eight줄따로 커밋을 남기고 싶다면?
$ git add -p number.txt
add의 p옵션을 사용하면 됩니다!!
그러면 이런 화면이 나오는데 y,n,q,a,d,e중에 e를 누르시면 됩니다.
e를 누르면 이런 화면이 나오게 되는데
추가하기 싫은 줄은 삭제 하시면 됩니다.
이렇게 말이죠!
$ git diff --staged
위의 코드로 비교를 해보면
이와 같이 seven만 추가되는 것을 보실 수 있습니다!!
이제 똑같이 commit을 진행하면 되겠죠?
이상으로 커밋쪼개기에 대해 알아봤습니다!!
끝!
'Git' 카테고리의 다른 글
husky를 이용한 git-hooks 자동화 (0) | 2022.06.21 |
---|---|
[Git] Git-Flow에 대하여 (0) | 2022.06.07 |