2016-06-27 2 views
1

У меня есть проекты А и В (как отдельные Git проекты), которые выглядят так:Git - контроль 2 проекта одновременно

A/some files 
A/B/some more files 

Я добавил B к A, но потом, когда я пытался совершить там никаких признаков B в восходящем репо, которое я предполагаю, связано с тем, что B - это собственный проект git.

Я предполагаю, что это что-то связано с подмодулями, но в двух словах я могу просто проверить оба проекта одновременно с помощью одной команды git checkout? Или мне нужно сделать 2 отдельных вызова командной строки? например

git checkout A; git checkout B; 

ответ

0

Это два отдельных проекта git. У них есть собственные РЕПО, их собственные головы. Так нет. Вы не можете использовать одну команду по умолчанию.

Каждая папка .git содержит всю информацию репо.

enter image description here

Это где мерзавец знает, куда толкать и то, что голова/репо он указывает на. git знает только о git repo в текущем каталоге с каталогом .git.

Более уточнение: Если вы вносите изменения в проекте B, а затем сделать коммит в A

git add . 
git commit -m "I'm in project A directory" 

Это только эффект репо А. Таким образом, делая

git clone {url to B} 

не будет отражают эти изменения

0

Они полностью независимы от git repo, поэтому они не знают друг о друге. Таким образом, команды будут влиять только на активное репо. См. Активное git-репо с командой «git rev-parse -git-dir»

Вызов командной строки, которую вы показали, не будет работать, поскольку по умолчанию git определяет активный репозиторий и рабочее дерево по текущему каталогу , Вместо этого используйте

cd path_to_A/A 
git rev-parse --git-dir 
git checkout MyBranchInA 
cd B 
git rev-parse --git-dir 
git checkout MyBranchInB 

Подмодули Git не участвуют, потому что они не были установлены. Вы можете настроить его с помощью добавления god subodule add, см. Также «git sub-tree», который делает только то, что (как говорят), лучше. для получения помощи по этим командам см. «git help subodule» и «git help поддерево»

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