Я создал локальную ветку, которую я хочу «продвинуть» вверх по течению. Здесь, на Stack Overflow, есть похожий вопрос о том, как отслеживать недавно созданную удаленную ветку.
Тем не менее, мой рабочий процесс немного отличается. Сначала я хочу создать локальную ветвь, и я буду продвигать ее только тогда, когда я удовлетворен и хочу поделиться своей веткой.
- Как бы я это сделал? (мои поиски в гугле, похоже, ничего не придумали).
- Как бы я сказал своим коллегам вытащить его из верхнего хранилища?
ОБНОВЛЕНИЕ С Git 2.0 есть более простой ответ, который я написал ниже: https://stackoverflow.com/a/27185855/109305
git
branch
git-branch
Джеспер Рённ-Йенсен
источник
источник
get fetch --all
выбирает новые ветви на удаленной стороне (но толькоget fetch --prune
локально удаляет ссылки на удаленные удаленные ветви). Я думаю, либо они должны быть настроены автоматически, либо вы должны говорить с ними устно.Ответы:
Сначала вы создаете свою ветку локально:
Удаленная ветвь создается автоматически, когда вы отправляете ее на удаленный сервер. Поэтому, когда вы почувствуете, что готовы к этому, вы можете просто сделать:
Где
<remote-name>
обычноorigin
, имя, которое git дает удаленному, с которого вы клонировали. Тогда ваши коллеги просто потянут эту ветку, и она автоматически будет создана локально.Обратите внимание, что формально этот формат:
Но когда вы опускаете один, он предполагает, что оба названия ветвей одинаковы. Сказав это, как предостережение , не делайте критическую ошибку, указав только
:<remote-branch-name>
(с двоеточием), иначе удаленная ветвь будет удалена!Чтобы последующий
git pull
знал, что делать, вы можете вместо этого использовать:Как описано ниже,
--set-upstream
опция устанавливает восходящую ветвь:источник
git push <remote>
не будет выдвигать ветвь, если она отсутствует<remote>
.git push -u <remote-name> <branch-name>
вместо этого, чтобы последующийgit pull
знал, что делать.origin
, что означает «сервер, с которого я получил остаток этого репо»: таким образомgit push origin <branch-name>
.-u
опцию, вы можете просто напечататьgit push -u
потом в ветке, тогдаgit pull
будет работать.git push -u origin <local-branch-name>
- вот что сработало для меня.Во-первых, вы должны создать свою ветку локально
После этого вы можете работать локально в своей ветке, когда вы готовы поделиться веткой, нажмите ее. Следующая команда выдвигает ветку к источнику удаленного репозитория и отслеживает ее
Товарищи по команде могут добраться до вашего филиала, выполнив:
Вы можете продолжить работу в ветке и push в любое время, не передавая аргументы git push (git push без аргументов будет переводить мастер на удаленный мастер, your_branch локальный на удаленный your_branch и т. Д ...)
Товарищи по команде могут нажать на вашу ветку, делая коммиты, а затем толкать явно
Или отслеживание ветки, чтобы избежать аргументов для git push
источник
Простое решение Git 2.0+:
Начиная с Git 2.0, поведение стало проще :
Вы можете настроить git,
push.default = current
чтобы сделать жизнь проще:Я добавил это, так что теперь я могу просто нажать новую ветку вверх по течению с
-u
будет отслеживать удаленную ветвь с тем же именем. Теперь с этой конфигурацией вы будете автоматически угадывать удаленную ссылку на git push. Из документации git.config :Для меня это хорошее упрощение моего повседневного рабочего процесса в Git. Параметр конфигурации учитывает «обычный» вариант использования, когда вы добавляете ветку локально и хотите создать ее удаленно. Кроме того, я могу так же легко создавать локальные ветви из удаленных устройств, просто делая
git co remote_branch_name
(в отличие от использования--set-upstream-to
флага).Я знаю этот вопрос, и принятые ответы довольно старые, но поведение изменилось, так что теперь существуют опции конфигурации, чтобы упростить ваш рабочий процесс.
Чтобы добавить к вашей глобальной конфигурации Git, запустите это в командной строке:
источник
git push -u origin HEAD
как ответ здесь, немного более многословно (вы пишете, что вы делаете), не слишком много печатать. Кроме того,git push -u
без дополнительных аргументов у меня не получилось, если ветка была создана с-t
git config --global push.default upstream && git checkout -b foo && <change a file> && git push -u
не работает (по состоянию на git 2.19.1); push требует аргументов remote и branch.git co remote_branch_name
?Как указано в предыдущих ответах,
достаточно для подталкивания локальной ветки.
Ваши коллеги могут извлечь все удаленные ветви (включая новые) с помощью этой команды:
Затем, чтобы внести изменения в ветку, обычный поток:
источник
Создайте новую ветку локально на основе текущей ветки:
Зафиксируйте любые изменения, как обычно. Затем нажмите вверх по течению:
Это ярлык для перемещения текущей ветви к ветви с тем же именем
origin
и отслеживания ее, чтобы вам не нужно было указыватьorigin HEAD
в будущем.источник
git push -u origin HEAD
. Я думаю, что это самый понятный способ.git status
первым.git remote show origin
в качестве третьего шага только для визуализации новых отношений отслеживания / отслеживания.Если вы хотите создать ветку из текущей ветки
Вы хотите ветку из удаленной ветки, вы можете попробовать
Если вы закончили с изменениями, вы можете добавить файл.
Затем сделайте коммит локально
Когда вы хотите подтолкнуть к удаленному репо
Все вместе будет
или Если вы хотите создать ветку из удаленной ветки, скажем, разработка
git checkout -b bug_fixes происхождение / разработка
Вы можете нажать на ветку для удаленного репо
В любое время вы хотите обновить свою ветку из любой другой ветки, скажем, master .
git pull origin master
,источник
Если вы хотите просто создать удаленную ветку без локальной, вы можете сделать это следующим образом:
Это подталкивает любую головку к ветке foo, которая не существовала на удаленном компьютере.
источник
Самое простое решение ... Drumm Roll ... git version 2.10.1 (Apple Git-78)
NB. Ветвь, которую вы только что создали в локальной среде, и удаленная несуществующая ветвь, в которую вы пытаетесь перейти, должны иметь одно и то же имя .
источник
git push -u
это намного проще. Требуется, чтобы у вас была одна глобальная строка конфигурации, см. Stackoverflow.com/a/27185855/109305 . Я используюgit push -u
постоянно, это покрывает 99% моих случаев использования при работе.[Быстрый ответ]
Вы можете сделать это за 2 шага:
1. Используйте
checkout
для создания локальной ветки:2. Используйте
push
команду для автоматического создания ветки и отправки кода в удаленный репозиторий:источник
Сначала вы создаете ветку локально:
А затем создать ветку удаленно:
Примечание: это работает на последних версиях git:
Ура!
источник
git push
когда ваша локальная ветвь не отслеживается пультом.Нажмите на ветку на GitHub:
Если вы хотите зафиксировать что-то в своей ветке, обязательно будьте в своей ветке.
Вы можете увидеть все ветви, созданные с помощью:
Который покажет:
Добавьте новый пульт для вашей ветки:
Вставьте изменения из вашего коммита в вашу ветку:
Обновите вашу ветку, когда оригинальная ветка из официального репозитория была обновлена:
Затем вам нужно подать заявку на слияние изменений, если ваша ветка является производной от разработки, вам нужно сделать:
Удалить ветку в вашей локальной файловой системе:
Чтобы принудительно удалить локальную ветку в вашей файловой системе:
Удалить ветку на github:
Здесь вся информация
Другой Существующий проект
источник
Создание локальной ветки из существующей ветки (может быть master / development / any-other-branch).
Нажмите это на пульт
Вот,
Если мы удалим локальные и удаленные имена веток, он будет иметь формат
Это подтолкнет локальную ветку к удаленной и с тем же именем, что и у локальной ветви имя_в ветви. Местный филиал также будет отслеживать удаленный филиал.
источник
Я знаю, что на этот вопрос получен хороший ответ, но я просто хотел перечислить шаги, которые я предпринимаю, чтобы создать новую ветку «myNewBranch» и перейти к удаленной («происхождение» в моем случае) и настроить отслеживание. Считайте, что это версия "TL; DR" :)
источник
Теперь с помощью git вы можете просто напечатать, когда вы находитесь в правильной ветке
git push --set-upstream origin <remote-branch-name
>и Git создать для вас ветку происхождения.
источник
Просто хотел добавить, что пока:
Создает новую ветку, она также проверяет эту ветку / делает ее вашей текущей веткой. Если по какой-то причине все, что вы хотите сделать, это отключить ветку, но не сделать ее текущей ветвью, то вы должны использовать следующую команду:
В первой команде «checkout» делает указанную ветку вашей текущей веткой, а «-b» означает: эта ветвь еще не существует, поэтому сделайте ее для меня.
источник
Как сделать через Source Tree
источник
git push -u <remote-name> <branch-name>
не работает, если вновь созданная ветвь не порождена из того же репо, т.е. если вы не создали новую ветвь, используяgit checkout -b new_branch
, то это не будет работать.Например, я локально клонировал два разных репозитория, и мне пришлось скопировать repo2 / branch1 в repo1 /, а затем отправить его тоже.
Эта ссылка помогла мне перенести мою локальную ветку (клонировано из другого репо) в мое удаленное репо:
источник
Вот как вы делаете это в затмении через Egit.
1) Перейдите в представление «Git Repository Exploring» и разверните проект git, для которого вы хотите создать ветку. Под Brances -> Local .. выберите ветку, для которой вы хотите создать ветку (в моем случае я выбрал master .. вы можете выбрать другую ветку, если хотите) .. затем щелкните правой кнопкой мыши и выберите опцию Create Branch .. и выберите оформить заказ этот вариант проекта, а затем нажмите кнопку Готово.
2) Теперь из проводника проекта выберите проект .. щелкните правой кнопкой мыши, затем Team -> Push Branch.
Будет создана новая удаленная ветка. Вы можете дать название филиала своим коллегам, чтобы они могли его использовать.
источник
Я использовал два способа создать ветку
Если вы используете TortoiseGit, выполните следующие действия: -
1.Создать ветку с помощью TortoiseGit
2. Нажмите на ветку
3. Переключиться на новую ветку
Если вы используете командную строку, выполните следующие действия: -
1.Создать ветку с помощью командной строки
2. Нажмите на ветку
3. Переключитесь на новую ветку, она уже переключится на new_branch_name, иначе вы можете использовать
источник
Я использую это, и это очень удобно:
Вам даже не нужен статус мерзавца; может быть, я просто хочу убедиться, что все идет хорошо ...
Вы можете иметь ОБА ЛОКАЛЬНУЮ и УДАЛЕННУЮ ветвь с помощью одной команды.
источник