2014-09-08 4 views
2

Я клонировал, вытащил и извлек мой удаленный git repo в BitBucket. Но я мог получить только мастерскую ветку. Мой репо в BitBucket имеет 4 филиала:Как получить все ветви моего разветвленного git repo

  • мастер
  • исправление/очистка
  • и т.д./schema_note
  • функция/SampleData

enter image description here

Я нашел два вопроса this и that. Я следовал некоторым инструкциям в этих вопросах.
Когда я попробовал git branch -a, я не видел других трех ветвей.

*master 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 

Я пробовал git checkout origin/fix/cleanup. Я получил сообщение об ошибке.

error: pathspec 'origin/fix/cleanup` did not match any file(s) known to git.

Я попытался checkout -b, но получил другую ошибку.

$ git checkout -b fix/cleanup origin/fix/cleanup 
fatal: Cannot update paths and switch to branch 'fix/cleanup' at the same time. 
Did you intend to checkout 'origin/fix/cleanup' which can not be resolved as com 
mit? 

Я также попытался выполнить oneliner.

for remote in `git branch -r`; do git branch --track $remote; done 

Но это дало мне новые ветви происхождения/HEAD и происхождения/мастер в моем местном, а не для других 3 ветвей. Что происходит в моем репо?

Я пробовал git fetch --all и git pull --all. Меня не изменили.

+0

Если вы клонировали репозиторий, у вас уже есть все (удаленные) ветви. – Kache

+0

См. Также http://stackoverflow.com/a/25663746/6309 – VonC

+0

@ VonC Я не думаю, что это ответ, здесь. Удаленные ветви, о которых идет речь, даже не указаны в выводе 'git branch -a' ... – Jubobs

ответ

4

В итоге я нашел исправление. Я изменил файл конфигурации git. я изменил

fetch = +refs/heads/master:refs/remotes/origin/master

в

fetch = +refs/heads/*:refs/remotes/origin/*

Затем $ git fetch --all работал на изменения.

Fetching origin 
Password for 'https://[email protected]': 
remote: Counting objects: 993, done. 
remote: Compressing objects: 100% (581/581), done. 
Receiving objects: 100% (966/966), 723.76 KiB | 8.00 KiB/s, done. 
emote: Total 966 (delta 324), reused 964 (delta 322)Resolving deltas: 0% (0/32 

Resolving deltas: 100% (324/324), completed with 21 local objects. 
From https://bitbucket.org/myusername/myproj 
* [new branch]  etc/schema_note -> origin/etc/schema_note 
* [new branch]  feature/sampledata -> origin/feature/sampledata 
* [new branch]  fix/cleanup -> origin/fix/cleanup 

В настоящее время $ git branch -a начал перечислять все удаленные ветви;

* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/etc/schema_note 
    remotes/origin/feature/sampledata 
    remotes/origin/fix/cleanup 
    remotes/origin/master 

И наконец, I checkout для каждой ветки.

[email protected] /d/xampp/htdocs/myproj (master) 
$ git checkout etc/schema_note 
Branch etc/schema_note set up to track remote branch etc/schema_note from origin. 
Switched to a new branch 'etc/schema_note' 

[email protected] /d/xampp/htdocs/myproj (etc/schema_note) 
$ git checkout feature/sampledata 
Branch feature/sampledata set up to track remote branch feature/sampledata from 
origin. 
Switched to a new branch 'feature/sampledata' 

[email protected] /d/xampp/htdocs/myproj (feature/sampledata) 
$ git checkout fix/cleanup 
Branch fix/cleanup set up to track remote branch fix/cleanup from origin. 
Switched to a new branch 'fix/cleanup' 

Вот мой окончательный список ветви репо:

$ git branch -a 
    etc/schema_note 
    feature/sampledata 
* fix/cleanup 
    master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/etc/schema_note 
    remotes/origin/feature/sampledata 
    remotes/origin/fix/cleanup 
    remotes/origin/master 
+3

Вы должны были первоначально клонировать, используя параметр '--single-branch' или' --depth', чтобы получить эту строку выборки. – onionjake

+0

@onionjake Первоначально у меня была проблема с клоном. Проверьте [это сообщение в блоге] (http://goo.gl/o0LQeq). – Sithu

+0

@onionjake точно, что случилось в моем случае! –

0

Если вы клонировали репо, у вас должны быть все удаленные ветви.

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

Если вы видите ветви в одном месте, а не другой, (например, на одного клиента, но не другой), то это может означать только одно:

  1. Есть филиалы местных в одном месте, которое не было распространяющиеся на удаленный сервер

    и/или

  2. локальный клиент не надуманные/нажал на распространяющиеся изменения

редактировать

на самом деле, может git namespaces быть уместным здесь?

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