티스토리 뷰

Programming/Tools

Git commit 수정하기

prograsshopper_ 2020. 9. 22. 18:03

깃허브 계정을 헷갈리는 바람에 잘못된 계정으로 커밋후 푸쉬까지 했는데 그 직후에 깨달았다. 덕분에 깃허브 계정의 잔디밭이 커밋이 있는 날임에도 회색을 띄고 있어서 영 거슬렸다. 이에 커밋의 author 수정하는 방법을 찾았는데 중간에 nano 에디터의 사용법을 몰라서 약간 헷갈렸어서 정리해본다. 근데...이게 일주일전 일이라 중간 과정이 좀 생각이 안 남 ㅠㅠ

우선 git log 로 커밋히스토리를 확인해본다.

 

commit b0sdfsdf13dffdggdfgfg
Author: wrong_user <blahblah@gmail.com>
Date:   Tue Sep 20 18:44:05 2020 +0900

    second commit: commt msg2

commit b5783drtedrd2dfgdfgd
Author: wrong_user <blahblah@gmail.com>
Date:   Tue Sep 20 15:23:40 2020 +0900

    first commit: commt msg1

first commit을 수정해보자. git checkout을 사용해서 해당 커밋으로 이동한다.

git checkout b5783drt 

 

이제 author를 수정해보자

git commit --amend --author="real_user <real_user@gmail.com>" --no-edit

이렇게 하면 새로운 커밋(예시로 b30rtgfsfdsdf 라고 하자)을 얻게 되는데 다시 원래의 브랜치로 checkout을 통해 돌아온 후 기존의 커밋을 새 커밋으로 대체한다.

git replace b5783d b30rtgfs

이 다음엔 향후 커밋들을 모두 이 대체된 커밋을 기반으로 진행하도록 아래의 명령어를 쓴다.

git filter-branch -- --all

이제 원래의 쓸모없어진 커밋을 지운다.

git replace -d b5783d

다른 커밋도 이와 같이 진행해준다. 이후 푸시하는데 충돌이 일어난다. 무시하고 진행하기 위해 git push -f 로 푸시해준다.

+ git rebase 를 사용해서 진행하는 방법도 있는데 이 방법이 왜였는지는 기억 안 나지만 안 먹혀서 난 위의 방법대로 진행했다. git rebase로 진행하는 방법은 이 링크에서 확인가능하다.
+ 위의 방법 관련된 스택오버플로우 링크

 

* Nano editor 단축키
이런 식으로 수정하다보면 커밋 대체시 nano editor가 열리는데 나는 vim editor 단축키만 알아서 그냥 닫기만 시도했더니 다 된 작업이 자꾸 날라갔나 그랬다. 나노 에디터에서는 그냥 엔터를 치면 저장이 되고 이 외에 M-A의 경우엔 alt + A 라고 한다.

반응형
댓글