깃 잔디가 안심어진다..
그동안 소스트리와 터미널을 이용해 깃을 사용해왔다.
그중 소스트리가 대부분을 차지했는데 깃 잔디가 제대로 심어지지않는 문제가 있었다.
알아보니 소스트리의 아이디와 깃의 아이디가 달라서 잔디가 심어지지 않는 것이였다.
일단 깃 작성자를 바꾸는 방법은 터미널에 이런식으로 코드를 작성하면 된다.
old email에는 내 전 이메일을넣고 correctname에는 바꿀 이름을 넣어주면 그동안의 커밋을 찾아서 작성자를 바꿔준다.
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
//이건 전체 커밋 지정
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --all
그 후 강제 push를 해야하는데 이런식으로 작성 하면 된다.
git push --force --tags origin 'refs/heads/*'
그러나 이방법은 협업을 하고 있는 도중에 사용하면 큰 문제가 생길 수도 있으니 팀원들의 동의를 구하거나 안하는게 나은 것 같다.
이런 문제와 해결방법을 너무 늦게 안 것 같아서 후회가 되지만 이제 부터 라도 다른 방법을 찾아 잔디를 심을 생각이다.
해결 방법을 두가지 생각해 봤는데 한번 다시 고민해 보고 선택할 생각 이다.
1. 새로운 깃을 만들어 같은 아이디로 다시 잔디를 심는다.
2. 그동안의 작업들을 찾아 작성자를 바꿔 다시 push를 한다.