TL; DR
Используйте:
git checkout -b master origin/trunk
, а затем все, что вы будете делать, чтобы скопировать этот Git репозиторий в другое место. Не стесняйтесь удалить имя удаленного отслеживания origin/trunk
, если вы не собираетесь выполнять дальнейший импорт SVN:
git branch -d -r origin/trunk
Вы можете повторить это для каждого имени ветки SVN, если хотите.
Длинный
Некоторые вещи, которые вам нужно знать:
У вас нет ни одной ветки, 1 на данный момент:
$ git branch
* (HEAD detached at origin/trunk)
У вас есть есть некоторые имена удаленного отслеживания (Git называет эти имена ветвей удаленного отслеживания , но это не имена ветвей , поэтому я предпочитаю опускать здесь слово ветка . Ваш импорт SVN создал эти:
$ git branch -a
* (HEAD detached at origin/trunk)
remotes/origin/svn-branch1
remotes/origin/svn-branch2
Первая строка, конечно, повторяется, но указывает на наличие remotes/origin/trunk
. Дополнительное слово remotes
здесь связано с тем, что полные имена каждого из них - refs/remotes/origin/<em>name</em>
; Git обычно опускает как refs/
, так и remotes/
, за исключением git branch -a
, который пропускает только refs/
в именах удаленного отслеживания (без видимой причины).
Теперь git checkout
выиграл 'не создает автоматически (локальное) имя ветки, если нет ни одного совпадающего имени удаленного отслеживания. Ваш импорт SVN не создал origin/master
, хотя он создал origin/trunk
.
Обычно имена удаленного отслеживания существуют в вашем Git репозитории из-за имен ветки , которые существовал в каком-то другом репозитории Git. Если бы это было так, вам нужно было бы переименовать эти ветки в другом Git репозитории. Но в вашем случае другого репозитория Git нет (пока) - есть только репозиторий SVN. В репозитории SVN было имя trunk
, и ваше преобразование скопировало это имя сюда.
Что вам нужно сделать, так это создать имя локальной ветки master
. Самая простая команда - git checkout -b master <em>starting-point</em>
, так как она также поместит вас в эту ветку (что вы, вероятно, захотите). Отправной точкой является фиксация, на которую вы хотите ссылаться этим новым именем master
.
1 В этом контексте слово ветка означает название филиала . В других контекстах в Git это означает другие вещи. Филиалы Git не очень хорошо соответствуют ветвям SVN. См. Также Что именно мы подразумеваем под «ветвью»?