2013-02-13 3 views
1

У меня такая ситуация. Один разработчик работает в каталоге .model, и он добавляет к нему новые файлы, затем он фиксирует новые файлы model_files и нажимает на начало/мастерGit checkout только новые файлы из каталога филиалов

Теперь второй разработчик также пишет модели в том же каталоге ./model (в его собственный рабочий каталог).

Пусть разработчик А создать такие модели:

./model/m1.php 
./model/m2.php 

Теперь разработчик Б создавать такие модели:

./model/m3.php 
./model/m4.php 

Пусть разработчик Коммит изменения и нажать на происхождения/мастера, потому что разработчик Б нужно m1 .php и m2.php для его работы.

Разработчик B также создал много других изменений/папок/файлов в проекте не только в каталоге ./models, но и его работа еще не завершена. Если он сливается или тянет, то его работа будет потеряна.

Как разработчик B может получить новые файлы модели в папке ./model только созданный разработчик A. Я попробовал что-то подобное на машине разработчика B. Я предполагаю, что разработчик B не зафиксировал m3.php и m4.php, потому что еще не закончил эти файлы. Он просто нужно иметь в ./models каталога новых файлов (m1.php и m2.php) от разработчиков А. На проявитель В машине я попробовал:

git fetch origin 
git checkout origin/master ./model/* 

Но, к сожалению, ошибка дает мне

error: pathspec 'model/m3.php' did not match any file(s) known to git. 
error: pathspec 'model/m4.php' did not match any file(s) known to git. 

но если я выполняю:

git checkout origin/master ./model/m1.php ./model/m2.php 

Тогда он работает, но это предполагает, что я должен знать exacly имена файлов, которые мне нужно оформить в этой отрасли.

Может ли кто-нибудь помочь мне с этим? Благодарю.

+0

Возможно, это поможет: [одного мерзавца файла] [ 1] [1]: http://stackoverflow.com/questions/6138817/how-to-update-particular-folder-file-from-central-repository-in-git –

+0

Это работает, но я должны знать, что новые имена файлов. –

+0

Из любопытства, почему вы не используете ветви для этого? Разработал ли dev на своей собственной ветке m1m2, тогда dev B может настроить ветвь отслеживания на своем конце и вытащить m1m2 и слиться в свою собственную ветку m3m4? – JosefAssad

ответ

1

Вам необходимо объединить входящие изменения в свою рабочую копию. Для того, чтобы сделать это, просто:

git fetch origin 
git merge origin/master 

Для того, чтобы сделать это, вы должны сначала либо совершить или организовать локальные изменения в компьютер B.

+0

Но merge будет работать во всех каталогах проекта, и мы хотим только в каталоге ./model. Если разработчик B объединит все каталоги проектов, то в нашем случае это будет катастрофой. –

2

разработчик Б должен работать

  1. мерзавец тайник
  2. мерзавец мастер тянуть происхождения
  3. мерзавец копить применять

Line 1 тайники разработчики работают таким образом, их ветвь свободна от изменений перед выполнением тяги

Line 2 выполняет выборку и слияние из главного каталога на пульте дистанционного управления. Это приведет к изменениям разработчика A.

Линия 3 повторно использует работу разработчика B в файлах m3.php и m4.php.

Очевидно, не включайте числа при выполнении команд в git.

+0

git pull даст мне конфликты из других каталогов проектов, и теперь мы не планировали объединять некоторые папки. Мы просто хотим извлечь из этого одного каталога ./model –

1

Я понял. Почти все было нормально, кроме этого '*' в конце.

Правильный способ загрузки файлов с удаленного филиала в некоторые папки проекта только при добавлении новых файлов в этой папке:

git fetch origin 
git checkout origin/master model/ 
0

Ваш снаряд расширяющейся

GIT оформления заказа происхождения/мастер ./model/*

перед тем, как git видит его. Это, вероятно, расширяется до

git checkout origin/master ./model/m1.php ./model/m2.php ./model/m3.php ./model/m4.php 

и тогда вы получите ошибку от мерзавца, что master не хватает model/m3.php и model/m3.php. Рассказывая оболочки не расширить *, как

git checkout origin/master './model/*' 

, кажется, работает, или просто использовать явный путь, как в других решений, как

git checkout origin/master model/