Почему git слишком медленно запускает большие файлы?Есть ли способ оптимизировать или игнорировать это? - PullRequest
3 голосов
/ 19 января 2012

У меня много больших файлов в проекте / public / deploy /.Все остальное - мои исходники.Когда я нажал вчера, все еще сегодня это еще не завершено, и моя сеть очень медленная для этого.Я понимаю это, потому что у меня самые большие файлы, и их выдвигают, что, как невозможно.

Как я могу сказать, что git push никогда не проталкивает каталог, project / public / deploy /?

project/
./application/<all source codes>
./framework/<all source codes>
./public/deploy/download/archlinux.fedora.centos.freebsd.isos.tar.gz
./public/deploy/tutorial/oracle.bigtable.mysql.db2.why.mp4
./public/deploy/tutorial/c.cpp.java.d.vala.tutorial.episode1.mp4
./public/deploy/tutorial/c.cpp.java.d.vala.tutorial.episode2.mp4
./public/deploy/tutorial/c.cpp.java.d.vala.tutorial.episode3.mp4
./public/deploy/tutorial/hacking.android.linux.mp4

Есть ли способ поставить push-флаг или поместить крошечный файл gitignore в директорию, где он может игнорировать все?(перед трекингом и после трекинга, когда есть предложение игнорировать, он всегда / навсегда игнорирует этот каталог, если я не удалю его?)

Ответы [ 2 ]

6 голосов
/ 19 января 2012

Большие двоичные файлы не должны находиться внутри вашего проекта. Git не подходит для этой работы, как вы заметили. Файлы должны быть проигнорированы в .gitignore вашего проекта. Добавьте строку типа public/deploy/tutorial/*.mp4 (или, если хотите, менее конкретную).

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

git filter-branch --index-filter \
  'git rm --cached --ignore-unmatch public/deploy/tutorial/*.mp4' \
  --prune-empty -- --all

Теперь, когда хранилище очищено, вы можете нажать его. Это должно завершиться так же быстро, как обычно.

0 голосов
/ 19 января 2012

Возможно, вы не хотите, чтобы за видеофайлами следовал Git.Даже если они находятся в постоянной разработке и время от времени меняются, вы можете просто проиндексировать файл проекта вашего видеоредактора или что-то в этом роде.

Однако я бы посоветовал вам разбить ваш огромный проект на более мелкие.,Например, я предполагаю, что код application/ опирается на код framework/, но изменения в этих папках независимы, пока API не нарушен.Так почему бы не поместить их в проекты 2 Git?

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

Я никогда не использовал это раньше, но это может быть очень удобно: Git поддерживает подпроекты.Это означает, что вы можете интегрировать другой репозиторий Git в свое дерево, и Git будет извлекать его коммиты, но база кода и история независимы и не будут такими большими.Может быть, это правильный подход для соединения от application/ до framework/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...