2010-06-10 3 views
34

Участник команды случайно нажал половину концерта нежелательных молний на отдаленный репо прошлой ночью, когда они были в спешке. Да ... упс.Могу ли я отменить последний git push?

С тех пор никто не тянул.

В идеале я хочу просто «отменить» то, что произошло.

Я посмотрел на фильтр-ветви и думал о попытке что-то вроде

git filter-branch --tree-filter 'rm -f *.zip' HEAD 

но это будет местным, и я не могу понять, как сделать это непосредственно на удаленном репо.

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

Очевидно, что если она удалит их, они снова и снова перехватывают, а затем оставляют содержимое в репо, что не хорошо.

+0

Есть похожие вопросы, возможно, они могут помочь: http://stackoverflow.com/questions/1270514/undoing-a-git-push – Don

ответ

53

Спасибо Дона, я видел это, но почему-то не понял, что он исправил мою проблему, потому что у меня только одна ветка.

я сделал:

git push -f origin 5910117a8fc2c71334251465b54d6d9daeb28d1c:master 

И все это обратно, как это было.

+0

, который отлично работает. вы можете подумать о том, разрешить ли кому-либо доступ к репо, способному это сделать, хорошо или нет :) напрямую обращаться к удаленному репо и использовать сброс git для перемещения своей главной ветви - это еще одна альтернатива, которая обычно может обойти любые проверки разрешений, реализованные в перехватах. – araqnid

+7

Возможно, вы захотите добавить: git reset --hard 5910117a8fc2c71334251465b54d6d9daeb28d1c Это позволит убедиться, что ваша локальная копия также вернулась к этой конкретной ревизии (в противном случае это будет похоже на то, что ваш местный репо отличается от удаленного). –

+12

разъяснение: ша-хэш должен быть хэшем последней ХОРОШЕЙ фиксации - не твой плохой фиксатор – philfreo

5

Я думаю

git reset --hard HEAD^ 
git push -f 

должны на хитрость: он сбрасывает локальную проверку на предыдущей фиксации (при условии, последний из которых является тот, который вы хотите отказаться) и сила толкает его в удаленный репозиторий.

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