Как вставить новую локальную ветку в удаленный репозиторий Git и отследить ее тоже? - PullRequest
4014 голосов
/ 04 мая 2010

Я хочу иметь возможность сделать следующее:

  1. Создание локальной ветви на основе какой-либо другой (удаленной или локальной) ветви (через git branch или git checkout -b)

  2. Нажмите местное отделение в удаленный репозиторий (опубликовать), но сделать это отслеживается, поэтому git pull и git push будут работать немедленно.

Как мне это сделать?

Я знаю о --set-upstream в Git 1.7, но это действие после создания. Я хочу найти способ внести аналогичные изменения при отправке ветви в удаленный репозиторий.

Ответы [ 13 ]

9 голосов
/ 05 января 2016

Я создал псевдоним, чтобы всякий раз, когда я создаю новую ветвь, она соответствующим образом передавала и отслеживала удаленную ветвь. Я поместил следующий кусок в файл .bash_profile:

# Create a new branch, push to origin and track that remote branch
publishBranch() {
  git checkout -b $1
  git push -u origin $1
}
alias gcb=publishBranch

Использование : просто введите gcb thuy/do-sth-kool с thuy/do-sth-kool - это имя моей новой ветви.

3 голосов
/ 21 апреля 2017

Немного опираясь на ответы здесь, я обернул этот процесс в простой сценарий 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 origin

git_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 "$1" ]
then
  show_help
fi

CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [ "$1" == "OK" ]
then
  BRANCH=$CURR_BRANCH
else
  BRANCH=${1:-$CURR_BRANCH}
fi

git push -u origin $BRANCH
0 голосов
/ 26 июня 2015

Чтобы загрузить локальный филиал публичного репозитория, вам нужно cd в публичный репозиторий и затем использовать следующий код:

git push -u origin branchname
...