Какая команда эквивалентна git clone -b на старых версиях Git? - PullRequest
2 голосов
/ 21 апреля 2011

Друг застрял со старой версией Git (кажется, он сказал 1.5?), Где он говорит, что опция -b <branch> не поддерживается.Я не могу обернуть голову вокруг этого, поэтому я действительно надеюсь, что кто-то может помочь:

Что будет эквивалентно следующей команде, без использования -b?

git clone -b $BRANCH $REPO

РЕДАКТИРОВАТЬЯ изначально просил git checkout - я не это имел в виду.Извините!

Ответы [ 3 ]

6 голосов
/ 21 апреля 2011

в старом git это требовало двух шагов:

git branch $BRANCH $FROM_COMMIT
git checkout $BRANCH

обратите внимание, я использовал $FROM_COMMIT, $REPO в вашем вопросе выглядит странно и вводит в заблуждение - вы можете создавать ветки только из коммитов, а не из других репозиториев.


редактирование моего ответа, так как вопрос был изменен. читая man-страницу для git clone, мы видим, что

-b

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

для достижения этого эффекта с более старой версией git мы использовали бы:

git clone $REPO
git branch $BRANCH origin/$BRANCH
git checkout $BRANCH

это установит ваш локальный HEAD на вновь созданный $BRANCH, который указывает на origin/$BRANCH

(надеюсь, я не ошибаюсь - у меня нет git для установки здесь ...)

4 голосов
/ 21 апреля 2011

Он должен уметь:

git clone -n $REPO
cd <reponame>
git checkout -b $BRANCH origin/$BRANCH

Я проверил, что опции действительны для v1.2.0, так что это должно быть хорошо, если он хотя бы на 1.5.

Для справки, клон получил только вариант -b / --branch в версии 1.6.5.

2 голосов
/ 21 апреля 2011

Это будет:

git clone -n $REPO
git checkout -b $BRANCH origin/$BRANCH

(см. Чарльз Бэйли ' ответ для правильного ответа)

Если вы неЧтобы получить ветку по умолчанию из репозитория HEAD, вам нужно выбрать ветку, которую вы действительно хотите отслеживать, а затем создать собственную локальную ветку .


Я бы удалил этот ответ, но комментарии Чарльза Бейли интересны:

Нет смысла сразу же извлекать после клона, но вы можете пропустить -nна clone , чтобы избежать ненужной проверки ветки по умолчанию на пульте дистанционного управления .
Кроме того, вам необходимо установить -b на checkout.

Я только что проверил, -b был добавлен к checkout в коммите 91dcdfd3, который предшествует v1.0 из git.
Если ваш друг использует версию, более раннюю, чем эта (что кажетсякрайне маловероятно) тогда вам нужно быть более конкретным.

...