Поддерево мерзавца, не правильно использующее .gitignore при выполнении частичного клона

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

На основе моего понимания поддерево мерзавца может сделать это.

http://github.com/apenwarr/git-subtree

Существует пример, который является вроде того, в чем я пытаюсь сделать:

http://psionides.jogger.pl/2010/02/04/sharing-code-between-projects-with-git-subtree/

Скажите, что соединительная линия моего проекта содержала каталоги: (выпейте мусорное ведро cfg фига данных src todo).

Когда я использую

git subtree split -P bib -b export
git checkout export

Я получаю каталог нагрудника плюс все файлы, которые нужно было проигнорировать или считать двоичным файлом на основе .gitignore, такого как src каталог и все в нем, которое заканчивается в тильде или./данных каталогах.

dwickrama@DWwork:~/research/trunk$ ls * -r
biblography.bib  JabRef

src:
script1.sh~ README~         script2.sh~
script3.sh~ script4.R~  script5.awk~
script5.py~ 

cfg:
cfgFile1.ini~  cfgFile2.ini~  cfgFile3.ini~

bin:
bigBinaryPackage1   bigBinaryPackage2

dwickrama@DWwork:~/research/trunk$ 

Мой .gitignore файл следующие:

*.doc diff=word
*.tex diff=tex
*.bib diff=bibtex
*.py diff=python
*.eps binary
*.jpg binary
*.png binary
./bin/* binary
*~

Как я предотвращаю это?

8
задан D W 24 March 2010 в 00:05
поделиться

2 ответа

Мне кажется, что всех этих игнорируемых файлов нет в вашем репо - они просто остатки от вашей предыдущей проверки.

Поскольку вы извлекли конкретное поддерево из исходного проекта, вашего файла .gitignore больше нет, поэтому файлы больше не «игнорируются», поэтому вы увидите их в статусе git. Но они также не являются частью вашего репо; они просто сидят там.

Попробуйте использовать «git clean», чтобы очистить их.

5
ответ дан 5 December 2019 в 18:58
поделиться

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

Возможные способы решения этой проблемы:

  • добавить те же файлы также в gitignore в подкаталог / подпроект
  • выполнить git clean перед переключением ветвей
  • просто игнорируйте это, в конце концов, вы, вероятно, не будете много работать в ветке, которая была сгенерирована git subtree split, кроме как выталкивать коммиты за пределы ... если вы действительно хотите работать над подпроектом отдельно, тогда, возможно, просто проверить сам подпроект в другом каталоге вне основного.
4
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: