2017-01-24 8 views
0

Я хочу украсить весь проект и правильно отформатировать код, но он перепишет текущий код и сделает меня автором, например, 50% кода , Наша команда и я не хотим этого. Поэтому возникает вопрос: как мне внести изменения в репозиторий, в то время как все авторы остаются такими же? Я понимаю этот процесс как что-то, что, вероятно, содержит 2 шага: 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-pick или git rebase сохраняет тот же автор, но изменяет коммиттер к текущему user.name и user.email в GIT-конфигурации.

Если вы будете использовать вишневый подбор и переписать некоторый код, вот возможный метод.

Скажем, 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.