[Git] Git 특정 커밋 수정&삭제 하기
git rebase란?
커밋의 기반을 재설정하는 명령어입니다. 마치 기차 레일을 재정비하듯, 커밋의 선형적인 역사를 새롭게 작성하는 작업이라고 생각할 수 있습니다.
즉, 기존 커밋을 다른 커밋 위에 재배치하여 더욱 깔끔하고 논리적인 커밋 히스토리를 만들 수 있습니다.
역할
- 선형적인 커밋 히스토리: 여러 브랜치에서 작업한 내용을 하나의 브랜치에 병합할 때, merge commit으로 인해 히스토리가 복잡해질 수 있습니다. rebase를 사용하면 merge commit 없이 깔끔한 선형적인 히스토리를 만들 수 있습니다.
- 커밋 수정: 잘못된 커밋 메시지를 수정하거나, 커밋 순서를 변경하거나, 커밋을 분할 또는 병합할 수 있습니다.
- 푸시 전 커밋 정리: 다른 개발자와 코드를 공유하기 전에 커밋 히스토리를 정리하여 더욱 명확하게 전달할 수 있습니다.
주요 옵션
--interactive
: 커밋을 하나씩 선택하여 수정, 삭제, 병합 등을 수행할 수 있는 인터랙티브 모드--abort
: rebase 작업을 중단하고 이전 상태로 되돌립니다.--continue
: rebase 작업을 계속 진행합니다.--skip
: 현재 커밋을 건너뛰고 다음 커밋으로 이동합니다.
주의해야될 점
- 공개된 브랜치에 사용하지 않기: rebase는 커밋 히스토리를 변경하기 때문에 다른 사람과 공유하는 브랜치에는 사용하지 않는 것이 좋습니다.
- 충돌 해결: rebase 중에 충돌이 발생하면 수동으로 충돌을 해결해야 합니다.
- 커밋 손실 가능성: 잘못된 사용으로 인해 커밋이 손실될 수 있으므로 주의해야 합니다.
- 원격 저장소와의 동기화: rebase 후에는 원격 저장소와의 동기화를 위해 git push -f 명령어를 사용하는것이 좋습니다. 다만, 이 명령어는 다른 개발자의 작업을 덮어쓸 수 있으므로 신중하게 사용해야 합니다.
사용법
git rebase <대상 브랜치>
[사용 예시]
git checkout feature
git rebase main