如何在不覆盖以前作者的情况下进行git更改';当前作者的姓名

如何在不覆盖以前作者的情况下进行git更改';当前作者的姓名,git,bitbucket,qt-creator,Git,Bitbucket,Qt Creator,我想美化整个项目并正确格式化代码,但它会重写当前代码,使我成为50%代码的作者。我们的团队和我都不希望这样。所以问题是:在所有作者都保持不变的情况下,如何对存储库进行更改?我认为这个过程可能包含两个步骤:1)在一个单独的分支中进行提交,并进行大量更改,然后2)将我作为提交的每一行的作者回复给以前的作者 有可能吗?我不能把我的头绕在它周围。也许,还有别的办法?我怎样才能做得更好 我们使用Bitbucket存储库,Qt Creator作为IDE,艺术风格作为美化工具 任何帮助和建议都将不胜感激 GI

我想美化整个项目并正确格式化代码,但它会重写当前代码,使我成为50%代码的作者。我们的团队和我都不希望这样。所以问题是:在所有作者都保持不变的情况下,如何对存储库进行更改?我认为这个过程可能包含两个步骤:1)在一个单独的分支中进行提交,并进行大量更改,然后2)将我作为提交的每一行的作者回复给以前的作者

有可能吗?我不能把我的头绕在它周围。也许,还有别的办法?我怎样才能做得更好

我们使用Bitbucket存储库,Qt Creator作为IDE,艺术风格作为美化工具

任何帮助和建议都将不胜感激

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_AUTHOR_DATE
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_COMMITTER_DATE
这些变量可用于在
git commit
上伪造姓名、电子邮件、作者和提交人的日期

例如:
GIT\u AUTHOR\u NAME=“foo”GIT\u AUTHOR\u EMAIL=”foo@foo.com“git提交-m'blah'

git cherry pick
git rebase
保留同一作者,但将提交者更改为git config中的当前user.name和user.email

如果您要使用cherry pick并重写一些代码,下面是可能的方法

假设
旧分支
是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)
现在我们得到了美化的
新分支