2012-04-18 3 views
4

Я довольно newb относительно git и обычно git commit, pull и push - это единственные команды, которые я делаю. Недавно я заметил, что мои коммиты были настроены на имя по умолчанию и адрес электронной почты и хотели его изменить. Тупо Я побежал это, который я нашел в посте где:Как отменить «фильтр-фильтр-ветвь -f -env-filter»

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail'; 
GIT_COMMITER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" HEAD 

Я думал, что это изменило бы только мои фиксации, но вместо этого он изменил все коммиты в репозитории, чтобы мое имя и адрес электронной почты. Конечно, чтобы продолжить свою «тупость», я подтолкнул изменения.

Также я, кажется, потерял историю, и все коммиты на github, похоже, тоже дублируют запись. Один с моим именем и электронной почтой, а также оригинальным.

Есть ли способ вернуть это? Может быть, используя копию предыдущей тяги, чтобы нажать исходную информацию?

+0

Вы проверили это из http://stackoverflow.com/questions/1983101/git-duplicate-commit-issue, это похоже на дубликат – Learath2

+0

Это более или менее то же самое, хотя я хотел бы вернуть информацию на этих коммитах, а также не только избавиться от дубликатов. Благодарю. – WhiT3Kr0w

ответ

1

коллега был в состоянии говорить с некоторыми GIT профи, и я t кажется, что «git push -f» из предыдущей копии решила проблему. Кроме того, мне нужно было сделать git pull -rebase на моей копии.

Спасибо за помощь.

7

Если вы что-нибудь, чтобы очистить свободные объекты после того, как вы сделали команду Фильтр-ветви не будет сделано, вы можете сбросить ваш мастер ветви (предполагая, что голова была мастером, когда вы дали команду):

git reset --hard refs/original/master 
+0

Ты был быстрее, чем я :) – Learath2

1

Если вы не сделали очистки еще вы можете сбросить свою ветку с: git reset --hard refs/original/master это будет перезагружать все исходные файлы перед вашей попыткой затем сделать:

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail'; GIT_COMMITER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" "--tag-name-filter cat -- --all"