2013-12-14 3 views
-1

Я случайно нажал на репо с неправильным сообщением о совершении сделки. Я следил за решениями, предоставляемыми в Интернете, но это не изменило мое сообщение о совершении сделки. Я попытался решить эту проблему, создав файл readme.txt и толкая его новым коммита, как это:Изменение сообщения фиксации уже нажатого репо

git add . 
git commit -amend -m 'My New Correct Message' 
git push origin master 

Однако это не изменило сообщение фиксации в остальных файлов в моем репо.

PS: Я нажимаю проект eclipse на github, поэтому он имеет много папок и файлов, и я хочу изменить сообщение commit всех из них.

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

Как я могу решить эту проблему?

С уважением

+0

Любые сообщения об ошибках? Как только вы нажали, вы не должны вносить изменения в эти коммиты, потому что это заменит фиксацию на новую. Вы просто нажимаете на свой собственный репозиторий на github, куда больше никто не настаивает? Только в этом случае вы можете сделать «git push -force ...», когда вы получите сообщение об отсутствии быстрой перемотки вперед без опции '--force'. В противном случае вы должны просто жить с этой опечаткой навсегда. – stackunderflow

+0

Git - это кусок мусора. Мы даже не можем изменить сообщение фиксации. BTW никто не разветвил/вытащил мое репо еще – Naruto

+1

Да, ругаться за программное обеспечение, которое вы даже не понимаете, является альтернативным решением, но далеко не у вас. – stackunderflow

ответ

0
git push origin +master 

должен сделать трюк. Но ВНИМАНИЕ!: Не делайте этого, если есть другие люди в зависимости от вашей опубликованной ветви, или вы нарушите их работу, вынуждая их переустанавливать.

+0

Изменит ли это сообщение всех файлов и папок в моем репо? – Naruto

+0

Сообщения прикрепляются к фиксации, а не к файлам/папкам. Первые две строки изменили сообщение последнего фиксации. То, что я записал, заменит ведущую ветвь по происхождению главной ветвью в вашем локальном репозитории, так что теперь последняя фиксация будет иметь новое сообщение. – elmart

+0

Ну, я не хочу, чтобы последнее сообщение фиксации изменилось, потому что я сделал много коммитов для решения этой проблемы. Есть ли способ изменить сообщение всех коммитов или совершить определенный номер – Naruto

2

История, как и у вас только с разными [ничего] - это другая история. Их очень легко приготовить. Все любят говорить страшные вещи об этом, но все это сводится к тому, что если вы собираетесь переключить ссылку на переписанную историю, вы должны рассказать всем, кто мог бы получить более старую историю, чтобы восстановить новую и, возможно, переустановить их работа над ним, если у них есть какие-то проблемы. Если это легко сделать правильно, переписывайте своего друга.

Существует три основных способа сделать измененную версию текущих фиксаций, amend, rebase -i и filter-branch. amend предназначен для изменения единого накопления, из комментариев видно, что у вас больше, чем один. Если у вас есть только несколько штук, скажите до десятка или около того ?, сделайте git rebase -i --onto lastgoodcommit lastgoodcommit, измените все pick s на reword и отредактируйте сообщения фиксации по одному. Так, скажем, у вас есть

$ git lgdo # alias for log --graph --decorate --oneline --all 
* dea1611 (HEAD, a) - 
* e628853 Initial dynamic-selchar 
* a4caf1a Can't call InvalidateDi 
* cff32b3 Can't call InvalidateDi 
* aa8d514 This branch ctd's for s 
* 55787bc more refactoring to red 
* a0cfdb7 Beginnings of multipage 
* 3a8296b Apple-polishing 
* 5bbd1ee Okay, the single-displa 
* 31c60fe Version 0.0a: basic fun 
* ae8379b . 
* 6b0edc6 Little light refactorin 
* 834cfbf More prep for menu/butt 
* e842e61 wip 
* 4a1b928 More UI decode/route pr 
* b836444 Baseline development 

и все после того, как «Apple-полировки» имеет плохую коммита, вы могли бы сделать

git rebase -i --onto 3a82 3a82 # or :/^Apple :/^Apple 

и в, например, vim :%s,^pick,reword,|wq, чтобы начать цикл.

После того, как вы закончите, git push origin +master

Смежные вопросы