Добавить существующие папки с исходным кодом в Local Git Repository - PullRequest
5 голосов
/ 03 декабря 2011

Допустим, у меня есть две существующие папки, которые я хочу поместить в Git контроль исходного кода. Один называется CurrentProduction, а другой CurrentDevelopment. Будут ли правильными следующие шаги?

  1. Создать новую папку с именем MyProject
  2. git init
  3. Переместить содержимое CurrentProduction в MyProject
  4. git add .
  5. git commit -m 'initial master commit'
  6. git checkout -b develop
  7. Удалить все файлы в MyProject (кроме папки .git, конечно)
  8. Переместить содержимое CurrentDevelopment в MyProject
  9. git add -A
  10. git commit -m 'initial develop commit'

Или есть "другой" способ?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2011

Это хороший способ.

Единственная возможная проблема, если вы посмотрите на историю ветви разработки с git log, у вас будет текущее состояние рабочего проекта в качестве последнего коммита (тот, что с «первоначальным генеральным коммитом»).Что семантически не совсем корректно.

Если это беспокоит, вы можете сделать первый начальный пустой коммит , который будет служить общей базой для двух ветвей:

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"
0 голосов
/ 03 декабря 2011
  • Выполнение так, как вы описываете, не принесет никакого вреда.

  • Вы можете переместить каталог .git в дерево, которое вы хотите зафиксировать, вместоперемещение дерева в хранилище.

  • Вы можете использовать опцию --work-tree или GIT_WORK_TREE переменную среды, чтобы действовать так, как если бы вы это сделали:

    git add --work-tree=CurrentProduction -A; git commit ...
    

    Обратите внимание, что нет необходимости указывать его для команд после add, поскольку add копирует содержимое в индекс, commit использует индекс, а индекс находится в .git.

В качестве отдельной проблемы обратите внимание, что ваша процедура сделает начальный коммит develop дочерним по отношению к начальному коммиту master.Это, вероятно, правильная вещь для этого случая;Я просто хочу убедиться, что вы знаете, что это не симметрично.

...