Добавление существующих папок исходного кода в локальный репозиторий 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"