2015-12-31 2 views
1

Я обычно добавить существующий проект в Github используя следующую документацию .. https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/Добавить существующий проект Github без инициализации .gitignore

Документация также говорит .. Чтобы избежать ошибок, не инициализировать новое хранилище с файлами README, лицензии или gitignore. Вы можете добавить эти файлы после того, как ваш проект был перенесен в GitHub.

Так что теперь, когда я нажимаю изменения в первый раз, все ненужные файлы jar files/target directory/ide загружаются в ненужные файлы. Затем я вручную исключить эти файлы, добавляя .gitignore как это ..

$ echo '.idea' >> .gitignore 
$ git rm -r --cached .idea 
$ git add .gitignore 
$ git commit -m '(some message stating you added .idea to ignored entries)' 
$ git push 
  1. Могу ли я предотвратить добавление всех этих ненужных файлов сам первый раз?
  2. После удаления ненужных файлов (target, jar, ide files) и добавления их в .gitignore, я подтвердил, что они больше не существуют в github, но когда я клонирую URL-адрес его 100-мегабайтной копии, фактический размер загрузки, однако, менее 1 МБ? Может кто-то прояснить это.
+0

Я предлагаю вам прочитать хотя бы первые главы вводного текста Git (например, отличный на сайте Git). Ваша проблема заключается в том, что вы слепо следовали за шагами в вашей ссылке (в частности, «git add.»), Не понимая, что вы можете выбирать, что вы добавляете. – JBentley

+0

Что говорит JBentley, и я вообще не рекомендую «git add.», Но IMO не отвечает на правильный вопрос. Существует _nothing_ неправильно с включением файла '.gitignore' в вашем первоначальном нажатии на GitHub. Важным является то, что вы не позволяете _GitHub_ создавать '.gitignore' при создании своего репозитория. Подробнее см. Ниже. – Chris

+0

@JBentley Dint действительно следит за шагами вслепую, и я использовал git некоторое время. Я знаю, что может сделать «git add.», Но в моем проекте так много разных типов файлов, и я не хочу добавлять их вручную один за другим через командную строку (я предпочитаю командную строку). Другие предложили, чтобы он добавил .gitignore к моему местному и использовал его во время нажатия, которое мне нравится. –

ответ

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

  2. Каталог .idea по-прежнему существует в истории git. Существует обширная документация о removing sensitive data из вашего репозитория на Github.

+0

«Единственная причина не добавлять файл' .gitignore' в первую очередь - это убедиться, что все файлы отслеживаются ». Я категорически не согласен с этим. Нет ничего плохого в том, что некоторые файлы не отслеживаются, и нет никаких оснований для их обеспечения. Эта рекомендация относится к процессу создания репозитория _on GitHub_. Если вы используете опцию «initialize project with README», и у вас также есть существующее местное репо, вам придется принудительно нажимать или иным образом обрабатывать две конфликтующие истории позже. Тем не менее, наличие '.gitignore' локально и толкание - отлично. – Chris

+0

@ Chris Вот что я говорю. – iltempo

+0

Не совсем. Говорить «единственная причина не добавлять файл' .gitignore' в первую очередь - убедиться, что все файлы отслеживаются »игнорирует гораздо более важную причину, позволяющую избежать ненужного конфликта слияния. – Chris

3

Не указывайте файлы, которые вам не понадобятся в репозитории при локальном локальном коммите. Т.е .:

  1. cd project_directory
  2. git init
  3. git add <everything_except what you do not need>. Вы можете перемещать/удалять файлы, которые не должны находиться в репозитории, если вы не хотите использовать .gitignore.
  4. совершить и нажать.

См. Также this answer, если вы хотите полностью стереть файлы из репозитория.

+0

Я попытался использовать git filter-branch -f -index-filter 'git rm --cached --ignore-unmatch target'. Я подтвердил, что в github они больше не существуют. Когда я загружаю свое репо как zip в github, его меньше 1 МБ, однако, когда я делаю клон git, его 100 Мб. После клонирования я обнаружил, что 'MyRepo/.git/objects/pack/pack-b6b2b82ecd58c551c3648b9ca97e4f8b29rrt3c2.pack' составляет 99,8 МБ. Как я могу избавиться от этого? –

1

Чтобы избежать ошибок, не инициализировать новый репозиторий с README, лицензии или gitignore файлов. Вы можете добавить эти файлы после того, как ваш проект был перенесен в GitHub.

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

Вот немного понятнее рекомендация:

При создании хранилища на GitHub, не используйте "Инициализировать этот репозиторий с README" вариант, как показано ниже:

GitHub's "Initialize this repository with a README" option

Этот вариант предназначен для новых репозиториев, но даст вам головную боль, если вы используете его, когда планируете использовать существующий репозиторий. Вот почему:

  1. При использовании этой опции вы создаете фиксацию непосредственно в GitHub. Этот коммит не существует нигде в вашем локальном проекте.
  2. Когда вы нажимаете свой существующий проект, Git не сможет решить свою историю с помощью одиночного фиксации, созданного при инициализации. Эти два хранилища не имеют коммитов и поэтому не могут автоматически разрешаться друг с другом.

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

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