Я хочу иметь возможность сделать следующее:
Создать локальную ветку на основе какой-либо другой (удаленной или локальной) ветви (через
git branch
илиgit checkout -b
)Перенесите локальную ветвь в удаленный репозиторий (опубликуйте), но сделайте так, чтобы он отслеживался,
git pull
иgit push
сработает немедленно.
Как я могу это сделать?
Я знаю об этом --set-upstream
в Git 1.7, но это действие после создания. Я хочу найти способ сделать подобное изменение при отправке ветки в удаленный репозиторий.
git
repository
git-branch
git-push
git-remote
Рони Янив
источник
источник
Ответы:
В Git 1.7.0 и более поздних версиях вы можете оформить новую ветку:
Редактировать файлы, добавлять и фиксировать. Затем нажмите
-u
--set-upstream
опцию (сокращение от ) :Git настроит отслеживание информации во время push.
источник
push.default
она настроена наupstream
, это не будет делать то, что, как вы думаете, будет. Он попытается вытолкнуть существующую ветку отслеживания. Используйте:git push -u origin mynewfeature:mynewfeature
или сделайтеgit branch --unset-upstream
первым.-u
опция каждый раз, когда мы отправляем ветку на ее удаленный сервер, или она нужна только в первый раз?-u
один раз, чтобы начать отслеживание. После просто использоватьgit push
Если вы не делитесь своим репо с другими, это полезно для передачи всех ваших веток на удаленный, и
--set-upstream
отслеживания правильно для вас:(Не совсем то, о чем просил ОП, но этот однострочный текст довольно популярен)
Если вы делитесь своим репо с другими, это не очень хорошая форма, поскольку вы засоряете репо всеми своими хитрыми экспериментальными ветками.
источник
git pull --all
тянет все это в другое место? kewlgit push --all -u
?До введения
git push -u
не былоgit push
возможности получить то, что вы желаете. Вы должны были добавить новые операторы конфигурации.Если вы создаете новую ветку, используя:
Вы можете использовать
git config
команду, чтобы избежать редактирования непосредственно.git/config
файла.Или вы можете вручную отредактировать
.git/config
файл для отслеживания информации в этой ветке.источник
git push origin -u local_branch:remote_branch
Проще говоря, чтобы создать новую локальную ветку, выполните:
Чтобы отправить его в удаленный репозиторий, выполните:
источник
git branch <branch-name>
иgit checkout -b <branch-name>
оба создают ветку, но проверяют переход на новую веткуsrc branch-name does not match any
Небольшая вариация решений, уже приведенных здесь:
Создайте локальную ветвь на основе другой (удаленной или локальной) ветки:
Перенесите локальную ветвь в удаленный репозиторий (опубликуйте), но сделайте так, чтобы он отслеживался,
git pull
иgit push
сразу же заработаетИспользование
HEAD
- это «удобный способ выдвинуть текущую ветку к тому же имени на пульте». Источник: https://git-scm.com/docs/git-push В терминах Git, HEAD (в верхнем регистре) - это ссылка на вершину текущей ветви (дерева).-u
Вариант просто короток для--set-upstream
. Это добавит ссылку отслеживания восходящего потока для текущей ветви. Вы можете убедиться в этом, посмотрев в свой файл .git / config:источник
git push -u origin <branch-name>
не работал для меня, но использовалHEAD
вместо того, чтобы<branch-name>
работать отлично :)Я просто делаю
над уже клонированным проектом.
Git создает новую ветку с именем
remoteBranchToBeCreated
в моих коммитах, которые я сделал вlocalBranch
.Редактировать : это изменяет текущую локальную ветвь (возможно, названную
localBranch
) вверх по течениюorigin/remoteBranchToBeCreated
. Чтобы это исправить, просто наберите:Таким образом, ваш текущий местный филиал теперь отслеживает
origin/localBranch
.источник
error: src refspec <new branch> does not match any.
когда я пытаюсь это.Я полагаю, что вы уже клонировали такой проект, как:
Затем в локальной копии создайте новую ветку и проверьте ее:
Предположим, что вы сделали «git bare --init» на своем сервере и создали myapp.git, вы должны:
После этого пользователи должны иметь возможность
ПРИМЕЧАНИЕ. Я предполагаю, что ваш сервер запущен и работает. Если это не так, это не сработает. Хорошие инструкции здесь .
ADDED
Добавить удаленную ветку:
Проверьте, все ли хорошо (извлеките источник и перечислите удаленные ветки):
Создайте локальную ветку и отследите удаленную ветку:
Обновите все:
источник
git remote add origin
местную ветку отслеживаемой? это ключевая команда здесь?git remote add origin
только зарегистрировать новый удаленный репозиторий. Это всего лишь шаг, необходимый перед отправкой ветки в этот удаленный репозиторий (если вы не хотите каждый раз вводить полный адрес)отредактировать , просто используйте
git push -u origin $BRANCHNAME
Используйте
git publish-branch
из разных инструментов Git Уильяма ( gitorious repo and clone ).ОК, нет Руби, так что - игнорируем гарантии! - взять последние три строки скрипта и создать скрипт bash
git-publish-branch
:Затем запустите
git-publish-branch REMOTENAME BRANCHNAME
, где REMOTENAME обычно является источником (вы можете изменить сценарий так, чтобы он по умолчанию принимал источник и т. Д.)источник
git push
иgit config
командует. Я использовал код скрипта для редактирования своего ответа. Вы могли бы использовать эту информацию для создания небольшого сценария оболочки, который выполняет ваши задачи.Чтобы создать новую ветвь путем отделения от существующей ветки
а затем нажмите эту новую ветку в хранилище, используя
Это создает и помещает все локальные коммиты во вновь созданную удаленную ветку.
origin/<new_branch>
источник
Для версии GitLab до 1.7 используйте:
(name_branch, например:
master
)Чтобы отправить его в удаленный репозиторий, выполните:
(name_new_branch, пример:
feature
)источник
Я создал псевдоним, чтобы при создании новой ветки она соответствующим образом передавала и отслеживала удаленную ветку. Я положил следующий кусок в
.bash_profile
файл:Использование : просто введите
gcb thuy/do-sth-kool
сthuy/do-sth-kool
моим новым именем ветви.источник
Немного опираясь на ответы здесь, я обернул этот процесс в простой сценарий Bash, который, конечно же, можно использовать и в качестве псевдонима Git.
Важным дополнением для меня является то, что это побуждает меня запускать модульные тесты перед фиксацией и передает текущее имя ветки по умолчанию.
git_push_new_branch.sh
источник
Вы можете сделать это за 2 шага:
1. Используйте
checkout
для создания локальной ветки:Работайте со своей веткой как хотите.
2. Используйте
push
команду для автоматического создания ветки и отправки кода в удаленный репозиторий:источник
Для большей гибкости вы можете использовать собственную команду Git . Например, создайте следующий скрипт Python где-нибудь
$PATH
под вашим именемgit-publish
и сделайте его исполняемым:Затем
git publish -h
покажет вам информацию об использовании:источник