Настройте структуру каталогов по умолчанию на git init
Я хотел бы оптимизировать рабочий процесс git, автоматизируя создание .gitignore, README, LICENSE и других файлов в команде git init
.
Для этого я RTFM git init
на http://git-scm.com/docs/git-init, и он говорит мне сделать одно из следующего:
- Используйте
git init --template=<template_directory>
, но это надоедает.
- Измените содержимое переменной среды $GIT_TEMPLATE_DIR, но я бы предпочел не.
- Задайте конфигурационную переменную
init.templatedir
. Теперь мы говорим!
Итак, я sudo mkdir /usr/share/git-core/templates/my_template
и touch
некоторые файлы в нем, затем я vim ~/.gitconfig
и добавьте:
[init]
templatedir = /usr/share/git-core/templates/my_template
И git config -l
говорит мне:
...
init.templatedir =/USR/доли/ git -core/шаблоны/my_template
...
Счастлив вместе с собой, я захожу в каталог игровой площадки для разработки и:
$ git init
Initialized empty Git repository in /the/current/directory
$ ls -a
. .. .git
Bummer... где находятся файлы?: (
Быстрая проверка:
$ ls -a /usr/share/git-core/templates/my_template
. .. .gitignore LICENSE README.md
$ git --version
git version 1.8.2.1
Кажется, что $ git init --template=/usr/share/git-core/templates/my_template
тоже не работает.
Итак, что я здесь делаю неправильно? Неправильная конфигурация? Плохой шаблон или его расположение (я на OSX)? Должен ли шаблон быть репозиторией git? Голый?
Ответы
Ответ 1
Поведение, которое вы видите, - это ожидаемое поведение git
:
Если вы правильно прочитали руководство относительно каталога шаблонов:
СПИСОК ШАБЛОНОВ
Каталог шаблонов содержит файлы и каталоги, которые будут скопированы в $GIT_DIR после его создания.
Файлы, скопированные из каталога шаблонов, помещаются в ваш GIT_DIR
, который по умолчанию относится к каталогу .git
в корневом каталоге вашего репо.
git init
не поддерживает шаблоны для дерева работ, насколько я знаю. Если это необходимо, вы должны уйти от написания простых псевдонимов bash или функций, которые вы можете сделать для вас.
Ответ 2
Вы можете сделать это, но для этого потребуется несколько дополнительных шагов.
-
Создайте структуру каталогов по умолчанию, как если бы это было обычное репо:
mkdir template && cd template
git init && touch README.md && cat ~/.gitignore_global > .gitignore
git add --all && git commit -m "init"
(строго говоря, эта последняя фиксация здесь не нужна, но в конечном итоге вы должны сделать это, так почему бы и нет)
-
Теперь удалите рабочее дерево и переместите файлы .git вверх:
mv .git/* ./ && rm -r README.md .gitignore .git
-
Теперь вы можете установить это как шаблон по умолчанию, но для примера:
mkdir ../myrepo && cd ../myrepo
git init --template=../template
(Обратите внимание на интересное сообщение: Reinitialized existing Git repository...
)
-
Теперь важный шаг: (ваше репо обновлено, но ваше рабочее дерево не является):
git reset --hard
(если вы пропустите фиксацию раньше, вам нужно будет зафиксировать здесь перед сбросом)
В будущем, если вы задали свой шаблон по умолчанию, вы просто
git init && git reset --hard
(У меня нет прямых ссылок, но эта глава помогает.)
Ответ 3
Вы можете создать репозиторий шаблонов, который вы клонируете каждый раз, когда хотите создать новый проект. Затем вы удаляете папку .git и копируете содержимое в новый проект, прежде чем вызывать git init. Предполагая, что ваш репозиторий шаблонов называется project_template:
$ git clone project_template new_project
$ cd new_project
$ rm -rf .git
$ git init
Не идеальное решение, но оно может быть написано сценарием.
Это модификация шагов здесь, которая специфична для использования GitHub.
Ответ 4
Вы можете найти инструмент cookiecutter, полезный для автоматизации первоначального создания проекта скелета на основе гибкого шаблона:
https://github.com/audreyr/cookiecutter
Это кросс-платформа и активно поддерживается. Хотя он реализован в python, он хорошо работает для любого типа проекта и не требует опыта python. Лучше всего, вы можете легко поделиться своими шаблонами через github.
Ответ 5
Простое решение, которое работает для меня:
- Создайте каталог в определенном месте с тем, что вам нужно внутри.
- Затем создайте script, который скопирует его содержимое туда, где вы хотите запустить репозиторий git.
Далее следует пример.
Кстати, некоторые общие конфигурации .gitignore доступны здесь: https://gist.github.com/octocat/9257657
Настройте каталог:
mkdir ~/.git_template_dir
cd ~/.git_template_dir
echo "..." > .gitignore
Напишите script:
* Никс:
#!/bin/bash
git init
cp -R ~/.git_template_dir/ .
Windows (% userprofile%, эквивалентный ~;% cd% to.):
git init
xcopy %userprofile%\.git_template_dir\ %cd%
Затем добавьте в Path для легкого доступа.