2016-04-18 3 views
1

Один из моих членов команды совершил и сделал так много и много файлов одновременно (5 Gbyte) на сервере git случайно. Это одно коммит.

И каждый член команды не может получить обновление git, потому что он слишком медленный (возможно, занимает 5-6 часов и более). Поэтому я думаю, что мы не можем удалить фиксацию на локальных машинах, потому что мы еще не можем обновить фиксацию. (git revert, git reset и т. д.) К сожалению, она сработала, поэтому мы не можем получить доступ к ее локальной машине.
Удалить или вернуть git commit в сервер git repo

Но мы можем получить доступ к серверу git repo, используя оболочку.

project3.git 

и папка.

HEAD config description hooks info objects packed-refs refs 

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

Обновление: Мы знаем имя фиксации. ех) 33aedaf55e

+0

сначала проверьте 'git log' и просмотрите последнее имя фиксации –

+0

Спасибо Muhammad, я добавил ответ на тему. –

+0

- это плохой фиксатор, содержащий 5 ГБ файлов. или один до этого? –

ответ

3

ПРИМЕЧАНИЕ: Перед тем, как сделать что-нибудь, вы должны обратно копию удаленного хранилища!

Если вы хотите сбросить ветку в удаленном репозитории: В удаленном репо, показывает недавнюю историю: git log -3

* 33aedaf - (HEAD, master) commit with big file 
* f18fd52 - some other commit 
* 160c78f - another commit 

Установите ветвь иого (предполагая, что хозяин здесь) к предыдущей фиксации: git update-ref refs/heads/master f18fd52 После этого выполнение git fetch на главной ветке не будет получать большой файл. То, что мы сделали, было похоже на git reset --hard f18fd52.

Большой файл по-прежнему сохраняется в удаленном репо. Вы могли бы указать недостижимые объекты: git fsck --unreachable И удалить все недостигнутые объекты: git gc --prune=all. Обратите внимание, что это приведет к удалению alll unreachable objects, поэтому убедитесь, что указатели ветви выглядят в порядке.

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

+0

работает как шарм. :) –

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