Как переместить новую локальную ветвь в удаленный репозиторий Git и отслеживать ее?
Я хочу быть в состоянии сделать следующее:
создать локальную ветвь на основе какой-либо другой (удаленной или локальной) ветви (через
git branchилиgit checkout -b)нажмите на локальную ветку
в удаленный репозиторий (опубликовать), но сделать это
отслеживается такgit pullиgit pushбудет работать сразу.
как мне это сделать?
Я знаю, о --set-upstream в Git 1.7, но это после создания действия. Я хочу найти способ внесения аналогичного изменения при перемещении ветки в удаленный репозиторий.
13 ответов:
в Git 1.7.0 и более поздних версиях вы можете проверить новую ветку:
git checkout -b <branch>редактирование файлов, добавление и фиксация. Тогда пуш
-u(сокращенно--set-upstream):git push -u origin <branch>Git настроит отслеживая информацию во время нажима.
Если вы не делитесь своим РЕПО с другими, это полезно нажать все ваши ветви к удаленному, и
--set-upstreamотслеживание правильно для вас:git push --all -u(не совсем то, что ОП просил, но этот однострочный довольно популярен)
Если Вы делитесь своим РЕПО с другими, это не очень хорошая форма, так как вы засорите РЕПО со всеми своими изворотливыми экспериментальными ветвями.
до
git push -uнетgit pushвозможность получить то, что вы хотите. Вы должны были добавить новые инструкции конфигурации.если вы создадите новую ветку через:
$ git checkout -b branchB $ git push origin branchB:branchBможно использовать
git configкоманда, чтобы избежать редактирования непосредственно .$ git config branch.branchB.remote origin $ git config branch.branchB.merge refs/heads/branchBили вы можете вручную отредактировать
.git/configфайл для отслеживания информации в этой ветке.[branch "branchB"] remote = origin merge = refs/heads/branchB
проще говоря, чтобы создать новую local филиала, сделать:
git branch <branch-name>чтобы подтолкнуть его к remote репозиторий, do:
git push -u origin <branch-name>
небольшое изменение решений, уже приведенных здесь:
создать локальную ветвь на основе какой-либо другой (удаленной или локальной) ветви:
git checkout -b branchnameпереместите локальную ветвь в удаленный репозиторий (опубликовать), но сделайте ее отслеживаемой так
git pullиgit pushбудет работать сразуgit push -u origin HEADиспользуя
HEADэто "удобный способ подтолкнуть текущую ветку к тому же имени на пульте дистанционного управления". Источник: https://git-scm.com/docs/git-push В терминах Git HEAD (в верхнем регистре) является ссылкой на вершину текущей ветви (дерева).The
-uвариант просто сокращенно--set-setupstream. Это добавит восходящую ссылку отслеживания для текущей ветви. вы можете проверить это, заглянув в свой .файл git/config строку:
Я полагаю, что вы уже склонировали проекта:
git clone http://github.com/myproject.git
затем в локальной копии создайте новую ветку и проверьте ее:
git checkout -b <newbranch>предположим, что вы сделали "git bare-init" на своем сервере и создали myapp.ГИТ, ты должен:
git remote add origin ssh://example.com/var/git/myapp.git git push origin masterпосле этого, пользователи должны иметь возможность
git clone http://example.com/var/git/myapp.gitПримечание: я предполагаю, что у вас есть сервер запущен и работает. Если нет, то это не сработает. Хороший способ - это здесь.
добавил
добавить удаленную ветку:
git push origin master:new_feature_nameпроверьте, все ли хорошо (fetch origin и список удаленных ветвей):
git fetch origin git branch -rсоздать локальную ветвь и отслеживать удаленную ветвь:
git checkout -tb new_feature_name origin/new_feature_nameобновить все:
git pull
Я просто делаю
git push -u origin localBranch:remoteBranchToBeCreatedуже клонировали проект.
Git создает новую ветку с именем
remoteBranchToBeCreatedпод мои коммиты я сделал вlocalBranch.
edit устарели, просто используйте
git push -u origin $BRANCHNAME
использовать
git publish-branchС различные инструменты Git Уильяма (gitorious РЕПО и клон).хорошо, нет Рубин, так что-игнорируя гарантии! - взять последние три строки скрипта и создайте bash-скрипт,
git-publish-branch:#!/bin/bash REMOTE= # Rewrite this to make it optional... BRANCH= # Uncomment the following line to create BRANCH locally first #git checkout -b ${BRANCH} git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} && git config branch.${BRANCH}.remote ${REMOTE} && git config branch.${BRANCH}.merge refs/heads/${BRANCH}затем запустите
git-publish-branch REMOTENAME BRANCHNAME, где REMOTENAME обычно является origin (вы можете изменить сценарий, чтобы принять origin по умолчанию, так далее...)
чтобы создать новую ветвь путем ветвления от существующей ветви
git checkout -b <new_branch>а затем нажмите эту новую ветку в репозиторий с помощью
git push -u origin <new_branch>Это создает и толкает все локальные коммиты к вновь созданной удаленной ветви
origin/<new_branch>
Я сделал псевдоним, так что всякий раз, когда я создаю новую ветку, он будет нажимать и отслеживать удаленную ветку соответственно. Я положил следующий кусок в
.bash_profilefile:# Create a new branch, push to origin and track that remote branch publishBranch() { git checkout -b git push -u origin } alias gcb=publishBranchиспользование: просто наберите
gcb thuy/do-sth-koolСthuy/do-sth-kool- Это мое новое имя филиала.
для версии GitLab до 1.7, используйте:
git checkout -b name_branch(name_branch, ex: master)
чтобы переместить его в удаленный репозиторий, выполните:
git push -u origin name_new_branch(name_new_branch, пример: feature)
немного опираясь на ответы здесь, я завернул этот процесс как простой скрипт Bash, который, конечно же, может быть использован в качестве псевдонима Git.
важным дополнением ко мне является то, что это побуждает меня запускать модульные тесты перед фиксацией и передает имя текущей ветви по умолчанию.
$ git_push_new_branch.sh Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} e.g. git_push_new_branch -> Displays prompt reminding you to run unit tests git_push_new_branch OK -> Pushes the current branch as a new branch to the origin git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origingit_push_new_branch.sh
function show_help() { IT=$(CAT <<EOF Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} e.g. git_push_new_branch.sh -> Displays prompt reminding you to run unit tests git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin ) echo "$IT" exit } if [ -z "" ] then show_help fi CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ "" == "OK" ] then BRANCH=$CURR_BRANCH else BRANCH=${1:-$CURR_BRANCH} fi git push -u origin $BRANCH
чтобы загрузить локальную ветвь публичного репозитория, необходимо
cdв открытый репозиторий, а затем используйте следующий код:git push -u origin branchname

Comments