Добавление существующих папок исходного кода в локальный репозиторий Git
Предположим, у меня есть две существующие папки, которые я хочу поместить в систему управления версиями Git. Один называется CurrentProduction, а другой CurrentDevelopment. Будут ли следующие шаги правильными?
- создайте новую папку с именем
MyProject -
git init - переместите содержимое
CurrentProductionвMyProject -
git add . -
git commit -m 'initial master commit' -
git checkout -b develop - удалить все файлы в
MyProject(за исключением .папка git конечно) - переместите содержимое
CurrentDevelopmentвMyProject -
git add -A -
git commit -m 'initial develop commit'
2 ответа:
Делать это так, как вы описываете, не принесет никакого вреда.
Вы можете переместить каталог
.gitв дерево, которое хотите зафиксировать, вместо перемещения дерева в хранилище.Вы можете использовать параметр
--work-treeили переменную окруженияGIT_WORK_TREE, чтобы действовать так, как если бы вы сделали это:git add --work-tree=CurrentProduction -A; git commit ...Обратите внимание, что его не нужно указывать для команд после
add, так какaddкопирует содержимое в индекс,commitиспользует индекс, и индекс находится в.git.В качестве отдельного вопроса обратите внимание, что ваша процедура сделает
developначальную фиксацию дочерней отmasterначальной фиксации. Это, вероятно, правильно для этого случая; я просто хочу убедиться, что вы знаете, что это не симметрично.
Это хороший способ.
Единственная возможная проблема, если вы посмотрите на историю ветви разработки с
git log, у вас будет текущее состояние производственного проекта как last commit (тот, который с "начальным мастер-коммитом"). Что семантически не совсем верно.Если это вас беспокоит, вы можете сначала сделать начальный пустой коммит , который служит общей базой для двух ветвей:
git init . git commit --allow-empty -m "initial commit" # add CurrentProduction content git add . git commit -m "initial master commit" # checkout at the empty commit git checkout -b develop HEAD^ # no need to delete any files! # working tree is empty # add CurrentDevelopment content git add . git commit -m "initial develop commit"