GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_AUTHOR_DATE
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_COMMITTER_DATE
これらの変数は、名前、電子メール、git commit
の作者とコミッタの日付を偽造するために使用することができます。例えば
:GIT_AUTHOR_NAME="foo" GIT_AUTHOR_EMAIL="[email protected]" git commit -m 'blah'
git cherry-pick
またはgit rebase
は同じ著者を保持するが、gitの-configに電流user.nameとuser.emailにコミッターを変更します。
cherry-pickを使用してコードを書き直す場合は、次の方法があります。
old-branch
がA-B-Cであるとします。
git init newbranch
cd newbranch
git init
git remote add origin /foo/bar/.git
git fetch origin old-branch
git checkout --orphan new-branch A
#make some extra changes
git add .
GIT_AUTHOR_NAME=$(git log -1 --pretty=%an A) GIT_AUTHOR_EMAIL=$(git log -1 --pretty=%ae A) GIT_COMMITTER_NAME=$(git log -1 --pretty=%cn A) GIT_COMMITTER_EMAIL=$(git log -1 --pretty=%ce A) git commit -m $(git log -1 --pretty=%B A)
git cherry-pick -n B
#make some extra changes
git add .
GIT_AUTHOR_NAME=$(git log -1 --pretty=%an B) GIT_AUTHOR_EMAIL=$(git log -1 --pretty=%ae B) GIT_COMMITTER_NAME=$(git log -1 --pretty=%cn B) GIT_COMMITTER_EMAIL=$(git log -1 --pretty=%ce B) git commit -m $(git log -1 --pretty=%B B)
#make some extra changes
git add .
git cherry-pick -n C
GIT_AUTHOR_NAME=$(git log -1 --pretty=%an C) GIT_AUTHOR_EMAIL=$(git log -1 --pretty=%ae C) GIT_COMMITTER_NAME=$(git log -1 --pretty=%cn C) GIT_COMMITTER_EMAIL=$(git log -1 --pretty=%ce C) git commit -m $(git log -1 --pretty=%B C)
ここで私たちは美しいnew-branch
を取得します。