게시글

5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭
Git - 19일 전 등록

제일 처음 커밋 앞에 커밋 추가하기

이 게시글은 첫 커밋 앞에 다른 커밋을 추가하는 방법을 다룹니다.

기존 커밋 히스토리가 A - B - C - D라면(A가 제일 오래된 첫 커밋) Z - A - B - C - D처럼 제일 앞에 Z를 끼워넣는 것이죠.

왜 이런 짓을 하는 걸까요? 다양한 이유가 있겠으나 저는 중간 커밋 수정하기 를 할 때 첫 커밋은 수정이 안 되는 것을 발견했습니다. 그래서 첫 커밋 앞에 빈 커밋(Z) 하나를 추가한 뒤에 두 번째 커밋이 된 A를 수정하는 것이죠. 다른 이유를 찾으셨다면 댓글로 남겨주세요!

방법은 다음과 같습니다.

git checkout --orphan temp
git rm -rf .
git commit --allow-empty -m 'Z'
git rebase --onto temp --root main
git branch -d temp 

Z(첫 커밋 메시지)나 main(현재 브랜치 이름) 부분은 여러분의 상황에 맞게 바꾸시면 됩니다. 다른 것들은 그대로 입력하세요.

간단한 원리를 설명하자면 다음과 같습니다. 처음에 기존 브랜치와 완벽하게 분리된 빈 브랜치(orphan branch) temp를 생성하고, 현재 파일을 전부 지웁니다(git rm -rf .)

현재 아무 파일/폴더가 없는데 --allow-empty 옵션을 사용해서 새로운 커밋 Z를 하나 만듭니다. 그러고나서 temp 브랜치 커밋 위에 main 브랜치의 커밋을 쌓는 겁니다. 그래서 Z 위에 A - B - C - D 가 올라갈 수 있게 됩니다. 이후에 temp 브랜치를 지우고 main 브랜치로 돌아가는 것입니다.

조회수:
0
목록
투표로 게시글에 관해 피드백을 해주시면 게시글 수정 시 반영됩니다. 오류가 있다면 어떤 부분에 오류가 있는지도 알려주세요! 잘못된 정보가 퍼져나가지 않도록 도와주세요.
Copyright 2016- . 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.
5만명이 선택한 평균 별점 4.9의 제로초 프로그래밍 강좌! 로드맵만 따라오면 됩니다! 클릭

댓글

아직 댓글이 없습니다.