2016-03-05 7 views
1

Существует много вилок Caffe, например MS имеют собственный Caffe fork.Как добавить вилку в качестве ветки?

Что я хочу сделать, это сравнить некоторые вилки, чтобы овладеть веткой оригинала Caffe.

Я знаю, что с помощью git я могу compare 2 branches, но мой вопрос заключается в том, как добавить вилку как ветку.

Я попытался this:

git clone https://github.com/BVLC/caffe.git 
Cloning into 'caffe'... 
remote: Counting objects: 32907, done. 
remote: Total 32907 (delta 0), reused 0 (delta 0), pack-reused 32907 
Receiving objects: 100% (32907/32907), 43.55 MiB | 571 KiB/s, done. 
Resolving deltas: 100% (21962/21962), done. 

cd caffe_BVLC/ 

git branch -l 
* master 

git remote add caffe_MS https://github.com/Microsoft/caffe.git 

git remote -v 
caffe_MS https://github.com/Microsoft/caffe.git (fetch) 
caffe_MS https://github.com/Microsoft/caffe.git (push) 
origin https://github.com/BVLC/caffe.git (fetch) 
origin https://github.com/BVLC/caffe.git (push) 

git fetch caffe_MS 
remote: Counting objects: 409, done. 
remote: Total 409 (delta 177), reused 177 (delta 177), pack-reused 232 
Receiving objects: 100% (409/409), 136.98 KiB, done. 
Resolving deltas: 100% (279/279), completed with 89 local objects. 
From https://github.com/Microsoft/caffe 
* [new branch]  bvlc_merge_2016_03_04 -> caffe_MS/bvlc_merge_2016_03_04 
* [new branch]  bvlc_windows_matlab -> caffe_MS/bvlc_windows_matlab 
* [new branch]  master  -> caffe_MS/master 
From https://github.com/Microsoft/caffe 
* [new tag]   0.1w  -> 0.1w 

git branch -l 
* master 

git checkout --track caffe_MS/MS 
fatal: git checkout: updating paths is incompatible with switching branches. 
Did you intend to checkout 'caffe_MS/MS' which can not be resolved as commit? 

Что я делаю неправильно, Уик название филиала следует указать?

Обновление: Результат раствора @ hek2mgl

git clone https://github.com/BVLC/caffe.git 
Cloning into 'caffe'... 
remote: Counting objects: 33290, done. 
remote: Total 33290 (delta 0), reused 0 (delta 0), pack-reused 33290 
Receiving objects: 100% (33290/33290), 43.93 MiB | 484 KiB/s, done. 
Resolving deltas: 100% (22252/22252), done. 
cd caffe 
git remote add caffe_MS https://github.com/Microsoft/caffe.git 
git fetch caffe_MS master 
remote: Counting objects: 379, done. 
remote: Total 379 (delta 111), reused 111 (delta 111), pack-reused 268 
Receiving objects: 100% (379/379), 130.06 KiB, done. 
Resolving deltas: 100% (246/246), completed with 62 local objects. 
From https://github.com/Microsoft/caffe 
* branch   master  -> FETCH_HEAD 
git diff caffe_MS/master 
fatal: ambiguous argument 'caffe_MS/master': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions 

ответ

1

Я знаю, что с помощью мерзавца я могу сравнить 2 ветви, но мой вопрос заключается в том, чтобы добавить вилку в отрасли.

Когда вы говорите, что вы знаете как сравнить две ветви, я думаю, что вы на самом деле означало, что вы знаете, как сравнивать местных отделений, и то, что вам не хватает, как сравнить удаленных филиалов.

Прежде всего, вы можете увидеть список удаленных филиалов с:

git branch -r 

И вы можете сравнить удаленные филиалы предваряя с удаленными именами, например:

git diff origin/master caffe_MS/master 

Что касается последняя ошибка, непонятно, что вы пытаетесь сделать с git checkout --track caffe_MS/MS. Ваше объяснение о сравнении филиалов и добавлении филиалов, вы никогда не упоминаете отслеживание. Если вы хотите оформить ветку с вилки, вы можете использовать тот же синтаксис, что и при оформлении заказа филиала происхождения:

git checkout -b caffe_MS_master caffe_MS/master 
3

Update

Вы используете древнюю версию мерзавца. Обновите до git >= 2, чтобы сделать команды ниже. Я использую 2.4.10.


следующие команды будет делать трюк:

# Clone repo 
git clone https://github.com/BVLC/caffe.git 
cd caffe 

# Add remote 
git remote add caffe_MS https://github.com/Microsoft/caffe.git 

# Fetch remote master from fork 
git fetch caffe_MS master 

# Compare to local master 
# We are currently working in the local master that's why it can be omitted 
git diff caffe_MS/master 
+0

По какой-то причине 'GIT дифф --name-только начало/мастер caffe_MS/master' работ только если я использую 'git fetch caffe_MS' (не' git fetch caffe_MS master', который дает ошибку 'fatal: неоднозначный аргумент 'caffe_MS/master': неизвестная ревизия или путь не в рабочем дереве). ' – mrgloom

+0

Можете ли вы попробовать точно мои шаги и только мои шаги? (Сделайте чистый клон) Он должен работать, я его протестировал. – hek2mgl

+0

Я удаляю папку caffe (не знаю, что такое чистый клон), и попробовал эти команды второй раз, см. Обновление, также 'git -version' дает' git версии 1.7.9.5'. – mrgloom