프로젝트 회고 - github unknown 수정

마이구미·2025년 7월 19일
1
post-thumbnail

문제점

옛날 프로젝트를 뒤져보면서 commit들을 살펴보았는데 내 commit이 unknown이나 root로 되어 있는게 아닌가? 예전 프로젝트를 진행할때는 중요하지 않다고 생각하고 그냥 넘어간 부분이었지만 최근 프로젝트를 진행하면서 심각한 문제라는 생각이 들게 되었습니다. commit에서 사용자의 이름이 들어가는 것은 해당 부분의 역할을 명확하게 파악하여 이후의 유지보수에서 책임을 부여하거나 다른 사람의 우리의 프로젝트를 보았을 때 내가 참여한 역할에 대한 증거의 역활도 하기 때문입니다.

깃허브에 익숙하지 않을 때 저질렀던 실수로 uniMovie(첫 프로젝트)와 chilgic(두번째 프로젝트)에서 동일하게 저질렀던 실수입니다.

첫 프로젝트인 uniMovie에서의 원인은 WSL/도커 컨테이너 등 별도의 환경에서 Git 설정을 안 한 상태에서 커밋을 진행한 것이 원인이 되어 사용자의 이름이 unknown이나 root로 설정이 된 것이었습니다. 그리고 두번째 프로젝트인 chilgic에서는 새 컴퓨터에서 Git 처음 설치하고 설정하지 않은 것이 원인이었습니다.

해결 방법

그럼 이를 해결할 수 있는 방법은 없는 것일까요? 완벽한 해결방법은 없으나 불완전한 방법을 사용할 수는 있습니다.

rebase

이는 뒤의 커밋을 다시 작성하기에 수정 이후의 커밋에 제 이름이 들어가는 단점이 있습니다.

chilgic에서 해당 내용을 수정한 과정을 공유하겠습니다.
먼저 해당 레포지토리를 클론합니다. 그 후 수정하고자 하는 브랜치로 위치를 옮깁니다. 저의 경우 'moon'이었습니다.

git checkout moon

그 후 rebase를 이용해서 해당 커밋의 수정창을 open 합니다. 저의 경우 커밋해시가 53eaed4였습니다.

git rebase -i "53eaed4^"

그렇게 열린 창에서 pick을 edit으로 수정 후 닫아 줍니다.

그렇게 되면 깃이 해당 커밋에서 멈춰 있게 됩니다. ammend command를 통해서 수정해줍니다. 아래는 이름 입력예시입니다.

git commit --amend --author="홍길동 <hong@example.com>"

그 후 continue를 통해 다음 커밋으로 넘어갑니다. 이게 중요한게 이걸 실행 안하면 뒤의 내용을 반영안해서 뒤의 커밋이 날아간 것처럼 보입니다.

git rebase --continue

그 후 로컬과 원격 히스토리가 달라지기 때문에 강제로 push 해줍니다.

git push origin main --force

그렇게 되면 반영이 완료됩니다.

하지만 main branch에는 해당 커밋 수정 내용이 반영 되어있지 않습니다.

따라서 그 내용을 반영하기 위해 merge를 진행해줍니다.

그렇게 하면 해결 되는 것 같지만 여전히 이전 커밋이 남아 있습니다.

다시 rebase를 이용해서 이번에는 pick을 drop바꿉니다.

그 후 충돌이 발생하면 충동을 해결합니다. 이 과정을 거치면 해결할 수 있습니다. 저는 rebase 쪽 결과를 따르는 것을 선택했습니다.

git checkout --theirs .

그 후 push를 했더니 뒤의 커밋에 제 이름도 commiter로 들어가네요...

이는 제가 작업을 rebase로 진행했기 때문에 이후 커밋들을 다시 작성하기에 제 이름도 같이 표시가 되는 것입니다.

fiter-repo

이는 브랜치 자체를 새로 만드는 것이므로 현업에서는 추천하지 않습니다. 하지만 특정 커밋만 바꿀 수 있고, 나머지 커밋을 유지할 수 있는 장점이 있습니다.

git filter-repo --force --commit-callback "if commit.original_id == b'53eaed4a104cca817ac2e6d29c3ebd92ae1202f7': commit.author_name = b'홍길동'; commit.author_email = b'example@exam.com'; commit.committer_name = b'홍길동'; commit.committer_email = b'example@exam.com'"

git remote add origin 깃헙 주소
git push origin main --force 

원하는 수정 id와 본인의 email, 이름은 본인의 것을 입력해주면 됩니다.

결과적으로 저는 이 방법을 이용해서 수정을 진행했고 성공한 것을 볼 수 있습니다.

하지만 해당 방식은 모든 커밋 id를 바꾸기 때문에 팀프로젝트 중에는 꼭 팀원과의 상의 후에 사용하시길 바랍니다.

마무리 말

깃헙을 처음하면서 많은 어려움을 겪고 실수를 할 수도 있지만 두려워 하지 않고 고치면서 나아가는 것이 중요하다고 생각합니다.

profile
개발 입문한 초보입니다

0개의 댓글