Notice
Recent Posts
Recent Comments
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
In Total
관리 메뉴

A Joyful AI Research Journey🌳😊

Git, Mac) 커밋한 후 특정 Author, Committer의 이름 수정하기 본문

💻Bootcamp Self-Study Revision✨/Git, GitHub

Git, Mac) 커밋한 후 특정 Author, Committer의 이름 수정하기

yjyuwisely 2023. 6. 10. 20:27

처음에 터미널에서 깃허브 아이디, 비밀번호 설정할 때 
깃허브에서 발급받은 클래식 토큰(Tokens(Classic))을 비밀번호로 사용한다. 

1) 폴더 경로를 지정해 주고 

예시) cd /Users/yeongjinyu/Documents/github


2) git clone을 한다.

예시) git clone https://github.com/yjyuwisely/Traveling-from-Ulju-gun.git

git clone 깃주소



3) 폴더 경로로 들어간다.
예시) cd /Users/yeongjinyu/Documents/github/Traveling-from-Ulju-gun



터미널에서 깃허브 커밋 History에 있는 잘못 입력된
4) 특정 Author의 이름을 자신이 원하는 깃허브 id로 수정하는 방법은 다음과 같다.

git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_NAME" = "잘못 입력된 Author's ID" ]
then
    GIT_COMMITTER_NAME="$원하는 ID"
    GIT_COMMITTER_EMAIL="$원하는 EMAIL"
    git commit-tree "$@"
else
    git commit-tree "$@"
fi' -- --branches --tags

git filter-branch --commit-filter '
if [ "$GIT_AUTHOR_NAME" = "€ export GIT_AUTHOR_EMAIL=@gmail.com”" ]
then
    GIT_COMMITTER_NAME="$yjyuwisely"
    GIT_COMMITTER_EMAIL="$yjyuwisely@gmail.com"
    git commit-tree "$@"
else
    git commit-tree "$@"
fi' -- --branches --tags


4.1) 다른 방법으로, 깃허브 Commit 히스토리에 있는 Copy the full SHA를 이용해서
코드에 자신이 원하는 Committer, Author의 ID, EMAIL을 각각 추가하면 된다.
결과로, 깃허브 History에서 특정 ID가 커밋했다고 나온다.

git filter-branch --commit-filter '
if [ $GIT_COMMIT = 커밋 ID ]
then
    export GIT_AUTHOR_NAME="$원하는 ID"
    export GIT_AUTHOR_EMAIL="$원하는 EMAIL"
    export GIT_COMMITTERS_NAME="$원하는 ID"
    export GIT_COMMITTERS_EMAIL="$원하는 EMAIL"
fi
git commit-tree "$@"
' -- --branches --tags

git filter-branch -f --commit-filter '
if [ $GIT_COMMIT = 0e9a567c2c04c2d0c09df51b88950034b54c1666 ] ||
[ $GIT_COMMIT = 03a9f0e18c491d838b820d6b7daadfee6b238506 ] ||
[ $GIT_COMMIT = e0bc86ef3fa54d363a3ac5b39ad7a3932c5aa327 ] ||
[ $GIT_COMMIT = 8cc73d934734d138498a2e17fc646323e230c51d ] ||
[ $GIT_COMMIT = f3d60c7e98781bbdea6eee7580882432da24c55f ] ||
[ $GIT_COMMIT = f2f685918250bfe4c2e1f5518f5559518457da05 ] 
then
    export GIT_AUTHOR_NAME="$yjyuwisely"
    export GIT_AUTHOR_EMAIL="$yjyuwisely@gmail.com"
    export GIT_COMMITTERS_NAME="$yjyuwisely"
    export GIT_COMMITTERS_EMAIL="$yjyuwisely@gmail.com"
fi
git commit-tree "$@"
' -- --branches --tags


git filter-branch -f --commit-filter '
if [ $GIT_COMMIT = ace20bb04315f0941473f012c2e286448f5b7300 ] 
then
    export GIT_AUTHOR_NAME="$yjyuwisely"
    export GIT_AUTHOR_EMAIL="$yjyuwisely@gmail.com"
    export GIT_COMMITTERS_NAME="$yjyuwisely"
    export GIT_COMMITTERS_EMAIL="$yjyuwisely@gmail.com"
fi
git commit-tree "$@"
' -- --branches --tags



4.2) 하단은 깃허브 Commit 히스토리에 있는 Copy the full SHA를 이용해서

Committer의 이름, 이메일을 변경하는 방법이다.
* 주의할 점은 아이디, 이메일 앞에 $을 사용하지 않는다.

git filter-branch --env-filter '
if [ $GIT_COMMIT = 커밋 ID1 ] ||
   [ $GIT_COMMIT = 커밋 ID2 ] ||
   [ $GIT_COMMIT = 커밋 ID3 ]
then
    export GIT_COMMITTER_NAME="원하는 ID"
    export GIT_COMMITTER_EMAIL="원하는 EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

git filter-branch -f --env-filter '
if [ $GIT_COMMIT = c9487a021a930fe4e64a6425467fd5ac32fb219e ] ||
[ $GIT_COMMIT = 8f01743142ba72e3e15ec5d79d4804df66df2812 ] ||
[ $GIT_COMMIT = bac202c9abf2b30765a8b22928888ca0be29d3d7 ] ||
[ $GIT_COMMIT = 3810e5d9a5ed0464671ebaf62e9c2488a178598d ] ||
[ $GIT_COMMIT = b4ae165e784bad1df4d4a499597f57f73ebd0f6e ] ||
[ $GIT_COMMIT = dec4d0d04c37020add66733d1a2e9e7deca41242 ] ||
[ $GIT_COMMIT = bee2469629bf553ea023cd634a4037a3d9706d4b ] 
then
    export GIT_COMMITTER_NAME="yjyuwisely"
    export GIT_COMMITTER_EMAIL="yjyuwisely@gmail.com"
fi
' --tag-name-filter cat -- --branches --tags


git filter-branch -f --env-filter '
if [ $GIT_COMMIT = ace20bb04315f0941473f012c2e286448f5b7300 ] 
then
    export GIT_COMMITTER_NAME=“GR”
    export GIT_COMMITTER_EMAIL=“GR@gr.com”
fi
' --tag-name-filter cat -- --branches --tags


4.3) 하단은 Author와 Committer의 이름을 일치시키는 코드이다.

git filter-branch --commit-filter '
if [ $GIT_COMMIT = 커밋 ID1] ||
[ $GIT_COMMIT = 커밋 ID2] ||
[ $GIT_COMMIT = 커밋 ID3] ||
[ $GIT_COMMIT = 커밋 ID4] ||
[ $GIT_COMMIT = 커밋 ID5] ||
[ $GIT_COMMIT = 커밋 ID6] ||
[ $GIT_COMMIT = 커밋 ID7]
then
    export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
    export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
fi
git commit-tree "$@"
' --tag-name-filter cat -- --branches --tags

git filter-branch --commit-filter '
if [ $GIT_COMMIT = 0e9a567c2c04c2d0c09df51b88950034b54c1666 ] ||
[ $GIT_COMMIT = 03a9f0e18c491d838b820d6b7daadfee6b238506 ] ||
[ $GIT_COMMIT = e0bc86ef3fa54d363a3ac5b39ad7a3932c5aa327 ] ||
[ $GIT_COMMIT = 8cc73d934734d138498a2e17fc646323e230c51d ] ||
[ $GIT_COMMIT = f3d60c7e98781bbdea6eee7580882432da24c55f ] ||
[ $GIT_COMMIT = f2f685918250bfe4c2e1f5518f5559518457da05 ] 
then
    export GIT_AUTHOR_NAME="$GIT_COMMITTER_NAME"
    export GIT_AUTHOR_EMAIL="$GIT_COMMITTER_EMAIL"
fi
git commit-tree "$@"
' --tag-name-filter cat -- --branches --tags


git filter-branch --commit-filter '
if [ $GIT_COMMIT = 0d169a0c881586d95b8d9b367488fd054291964a ] ||
[ $GIT_COMMIT = 839ac762a6336bea854b4002529489446f41cae9 ] ||
[ $GIT_COMMIT = 4264efecfdb21af0eca6e0b2933acd44bb97caff ] ||
[ $GIT_COMMIT = ea68a9d2b51f8423b3f77cfbda466e9d0f9f6fd0 ] ||
[ $GIT_COMMIT = a8e63057e432df086989c9e474a672067dcdf861 ] ||
[ $GIT_COMMIT = a90046558c6c922c19b3978bb5b749c255163f45 ] ||
[ $GIT_COMMIT = 17acdb806d311df26bf06371f1a952b217f9f570 ] ||
[ $GIT_COMMIT = 9fcf391c4df3b3f005d7602513f07dd850864ca2 ] ||
[ $GIT_COMMIT = d57e6d04beec430205c575db394afe510365475a ] ||
[ $GIT_COMMIT = f2411507c7c43a854e78afb268dd33bd5703c9a2 ] ||
[ $GIT_COMMIT = 707aa5c25261aad307dfb1c0283e87dd095d088e ] ||
[ $GIT_COMMIT = fe573ca78cf31e2edc42e4769c9104bfd2df27b1 ]
then
    export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
    export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
fi
git commit-tree "$@"
' --tag-name-filter cat -- --branches --tags


5) 마지막으로, 하단의 코드를 입력한다. 자신의 branch 이름으로 수정한다.

예시) git push --force origin master


In summary, --env-filter is used to modify the commit environment variables, while --commit-filter is used to modify the commit object itself.

Instead of modifying the commit history using git filter-branch, you can consider using other methods such as git rebase or git commit --amend to change the author information on individual commits. These methods allow you to modify the most recent commits without rewriting the entire history.

728x90
반응형
Comments