2017-01-24 13 views
0

プロジェクト全体をきれいにしてコードを適切にフォーマットしたいのですが、現在のコードを書き換えて、コードの50% 。私たちのチームと私はそれを望んでいません。ですから問題は、リポジトリを変更するにはどうすればいいのですか?すべての作者は同じままですか?私はこのプロセスをおそらく2つのステップが含まれていると理解しています.1)多くの変更点を持つ別のブランチでコミットし、2)以前の著者にコミットのすべての行の著者として私を戻します。現在の作者が前回の作者の名前を上書きしないようにする方法

それは可能ですか?私はそれの周りに私の頭を包むことはできません。多分、別の方法がありますか?どうすればいいですか?

私たちはBitbucketリポジトリ、Qt CreatorをIDEとして、Artistic Styleを美化器として使用しています。

ご迷惑をおかけして申し訳ありません。

答えて

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-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を取得します。

関連する問題