git linear history

git 커밋 내역을 main(master)브랜치 하나로 정리하기

# 다음과 같이 2개의 pr 커밋들을 master linear 하게 만들기
# 커밋 해시값이 다음과 같을때
update readme (333)
update about_me.md (222)
remove navbar-brand (111)

# master 브랜치에서
git co master

# 2개의 커밋 이전의 커밋 기준으로 rebase 후 모두 pick
# --committer-date-is-author-date 옵션이 없으면 pick 된 모든 커밋이 현재시간으로 변경되니 꼭 사용하자.
git rebase -i --committer-date-is-author-date 111

# 만약 커밋 수정이 잘못됐고 아직 푸시전이라면 rebase 전의 커밋으로 reset
git reset --hard "rebase 전 커밋 해시값"

# 강제 푸시
git push -f

# master 브랜치로 linear 하게 커밋이 정리되었다.

# 다른 로컬 저장소에선 다음과 같이 동기화한다.
git fetch origin
git reset --hard origin/master

# 커밋 시간 관련 고려사항
# merge 에 포함된 커밋들 날짜가 오래된 경우
# 다음과 같이 merge 내역이 있는 상태에서는 그래프가 표시되어 구분이 용이하지만

# 다음과 같이 linear 후 최신 커밋들 뒤로 위치해 히스토리(그래프)가 사라져 혼동을 줄 수 있다.

comments:

댓글 쓰기