몽땅뚝딱 개발자

[git] 히스토리 단장하기 본문

Development/Git

[git] 히스토리 단장하기

레오나르도 다빈츠 2023. 5. 14. 15:33

 

 

 

 

 

Git으로 일하다 보면 어떤 이유로든 로컬 커밋 히스토리를 수정해야 할 때가 있다.

 

1) 커밋의 순서 변경

2) 커밋한 파일 변경

3) 여러개의 커밋을 하나로 합치기

4) 하나의 커밋을 여러개로 분리하기

5) 커밋 전체 삭제

 

이 모든 것은 다른 사람과 코드를 공유하기 전에 이뤄져야 한다.

 

 


 

 

◽️ 마지막 커밋을 수정하기

1) 커밋 메시지를 수정하기

자동으로 텍스트 펀집기를 실행시켜 마지막 커밋 메시지를 열어준다.

$ git commit --amend

 

2) 나중에 수정한 파일을 마지막 커밋안에 밀어넣기

// 1. add하여 Staging Area에 넣은 뒤
$ git add

// 2. 아래 명령어로 커밋하면 커밋 자체가 수정되며 추가로 수정사항을 밀어넣을 수 있다.
$ git commit --amend

// 만약 커밋 메시지를 수정할 필요가 없다면 아래 명령어를 실행한다.
// 편집기가 실행되지 않는다.
$ git commit --amend --no-edit

 

이때 SHA-1 값이 바뀌기 때문에 과거의 커밋을 변경할 때 주의해야 한다.

rebase와 같이 이미 Push한 커밋은 수정하면 안 된다.

 

 

 

◽️ 커밋 메시지를 여러 개 수정하기

최근 커밋이 아니라 예전 커밋을 수정하려면 다른 도구가 필요하다. 히스토리를 수정하기 위해 만들어진 도구는 없지만 rebase 명령을 이용하여 수정할 수 있다. 현재 작업하는 브랜치에서 각 커밋을 하나하나 수정하는 것이 아니라 어느 시점부터 HEAD까지의 커밋을 한 번에 Rebase 한다.

 

 

◽️ 커밋 하나로 합치기

1. 로그는 이렇게 쌓여있다.

 

2. git log로 commit id를 확인하고 아래 명령어를 입력한다.

// commit을 하기 전의 id이다.
$ git rebase -i 7d3583f7cb4fa83df489912fa5bdbbb7

 

 

3. 아래와 같이 squash 옵션으로 수정한다.

 

4. Esc > :wq > 엔터를 눌러 변경내용을 저장한다.

여기서 커밋 메세지를 변경할 수 있다.

 

5. 끝!

하나로 잘 합쳐졌다.

 

 

 


 

 

 

 

 

출처 및 참고

프로 Git, Scott Chacon, 2014

 

 

'Development > Git' 카테고리의 다른 글

[git] reset  (0) 2023.05.21
[git] HEAD, Index, 워킹 디렉토리의 의미와 예제  (0) 2023.05.21
[git] 개념, 용어 정리 (추가 중)  (0) 2023.04.29
[git] Stashing과 Cleaning  (0) 2023.04.29
[git] 커밋 가이드라인  (0) 2023.04.13
Comments