2013-02-22 3 views
5

У меня есть необходимость хранить 3 ветки в 3 отдельных папках. (Я знаю, что это не способ делать вещи, но мне нужно сделать это по какой-то причине).Git - отдельная папка для каждой ветки. Настройка

Допустим, имя репо my_proj_repo.git Я создал папку под названием prodv1 в моей локальной системе:

git clone url:/my_proj_repo.git 

Теперь я вошел в prodv1 папку и скопированы файлы с сервера, то:

git commit -am "initial import" 
git push origin master 

Это подтолкнуло файлы к освоению. Теперь я создал еще две папки, как выше в моей локальной системе

stagingv1 
devv1 

Я хочу создать два локальных и удаленных филиалов с именами:

staging // this local branch points (push/pull) to staging remote branch 
dev  // this local branch points ((push/pull) to dev remote branch 

И эти две ветви должны быть в соответствующих Папки:

staging ==> stagingv1 folder 
dev  ==> devv1 folder 

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

Что я сделал, зашел в папку stagingv1 и сделал git clone <repo>. Но по умолчанию он равен master. И я не уверен, как инициализировать ветку staging здесь.

+4

Как это не «git способ делать вещи»? Отдельные проекты должны быть их собственным филиалом, если не новым репозиторием. В противном случае различные проекты в одном и том же филиале будут загромождать историю с историей других проектов. – NoBugs

ответ

8

Я думаю, что вы, возможно, придется создать все ветви в вашем репо

$ git branch <name_of_your_new_branch> 

Затем создайте все папки и в каждой из папки Clone репозиторий, но заказ соответствующие ветви.

Каждая папка должна/может отслеживать только соответствующая ветвь

Step 1 $ git branch [name_branch#1] 

Step 2 $ git branch [name_branch#2] 

Step 3 $ git branch [name_branch#3] 

...

Step 4 $ git push --all 
Step 5 md Folder #2 
Step 6 $ git clone [URL] 
Step 7 $ git checkout [name_branch] 
+0

Не могли бы вы написать шаги команды git? –

+0

Awesome Спасибо! –

+0

@KevinRave Я написал этот шаг, возможно, вам придется настроить команды, но я думаю, что идеи есть. – JudgeProphet

2

То, что вы хотите достичь стало проще (или даже тривиальным), так как мерзавца 2.5 введен git worktree команда.

В принципе, ваш ваш мерзавец репо имеет теперь полностью свободное количество проверяемых из ветвей, которая называется работа дерево:

  • 0 (голый репо)
  • 1 (нормальный репо)
  • п> 1, нормальный репо, где вы добавили п-1 работы деревьев

Если репо уже содержит вашу ветку, вы можете сделать:
git worktree add <path to branch> <branch name>
Или, если эта отрасль еще не создан, и вы хотите, чтобы отклониться мастер:
git worktree add -b <new branch name> <path to branch> master

Там вы идете. Обратите внимание, что вы не можете проверять ветвь в нескольких хранилищах одновременно.

Смежные вопросы