2017-01-24 74 views
0

我想美化整個項目並正確設置代碼的格式,但它會重寫當前代碼並使其成爲50%的代碼的作者。我們的團隊和我不想要這個。所以問題是:我如何對存儲庫進行更改,而所有作者保持不變?我理解這個過程可能包含兩個步驟:1)在一個單獨的分支中進行一次提交併進行很多更改,然後2)將此提交的每一行的作者恢復爲以前的作者。如何在不覆蓋當前作者以前作者的名字的情況下進行git更改

這有可能嗎?我無法把頭圍住它。也許,還有另一種方式?我怎樣才能做得更好?

我們使用Bitbucket存儲庫,Qt Creator作爲IDE和藝術風格作爲美化工具。

任何幫助和建議將不勝感激。

回答

1
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-pickgit rebase保持同一作者,但更改提交者的混帳配置當前user.name和user.email。

如果您將使用櫻桃挑選並重寫一些代碼,以下是可能的方法。

比方說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

相關問題