Jak przenieść nową lokalną gałąź w zdalnym repozytorium Git i śledzić jej?

chcę mieć możliwość wykonać następujące czynności:

  1. utwórz lokalną gałąź na podstawie jakiegokolwiek innego (zdalnej lub lokalnej) gałęzie (przez git branch lub git checkout -b)

  2. kliknij lokalną gałąź w zdalnym repozytorium (opublikować), ale to śledzone tak git pull a git push będzie działać od razu.

jak mam to zrobić?

wiem, o --set-upstream w Git 1.7, ale to po utworzeniu działania. Chcę znaleźć sposób wprowadzenia podobnych zmian po naciśnięciu gałęzie w zdalnym repozytorium.


w Git 1.7.0 i nowszych wersjach można sprawdzić nową gałąź:

git checkout -b <branch>

edytować pliki, dodawać i popełnić. Wtedy push -u (w skrócie --set-upstream):

git push -u origin <branch>

Git skonfiguruje śledząc podczas nacisku.


Jeśli nie dziel się swoim REPO z innymi, jest to przydatne nacisnąć swoje gałęzie do zdalnego, i --set-upstream śledzenie poprawnie dla ciebie:

git push --all -u

(nie to, że OP prosił, ale ten jednoliniowy dość popularny)

Jeśli dzielisz się swoim REPO z innymi, nie jest to bardzo dobra forma, tak jak засорите REPO wszystkimi swoimi dziwaczne eksperymentalnymi gałęziami.


git push -u nie git push możliwość dostać to, co chcesz. Trzeba było dodać nowe instrukcje konfiguracji.

jeśli tworzysz nowy wątek za pomocą:

$ git checkout -b branchB
$ git push origin branchB:branchB

można użyć git config polecenie, aby uniknąć edycji bezpośrednio .

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

czy można ręcznie edytować .git/config plik do śledzenia informacji w tej gałęzi.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB

po prostu, aby utworzyć nową rozmowy oddziału, zrobić:

git branch <branch-name>

aby go skłonić do pilot repozytorium, do:

git push -u origin <branch-name>

mała zmiana decyzji, już podanych tu:

  1. utwórz lokalną gałąź na podstawie innego (zdalnej lub lokalnej) gałęzie:

    git checkout -b branchname
    
  2. kliknij lokalną gałąź do zdalnego repozytorium (opublikować), ale zrób jej śledzonego tak git pull a git push będzie działać od razu

    git push -u origin HEAD
    

    za pomocą HEAD - to wygodny sposób, aby zachęcić bieżącą gałąź do tej samej nazwy na pilocie". Źródło: https://git-scm.com/docs/git-push W kategoriach Git HEAD (wielkimi literami) jest, powołując się na górną część bieżącej gałęzi (do drewna).

    -u opcja po prostu skrót od --set-setupstream. Doda link śledzenia w górę rzeki do bieżącej gałęzi. można to sprawdzić, patrząc w swój .plik git/config wiersz:

    Enter image description here


myślę, że już склонировали projektu:

git clone http://github.com/myproject.git
  1. następnie w lokalnej kopii utwórz nowy wątek i sprawdź ją:

    git checkout -b <newbranch>
    
  2. załóżmy, że zrobiłeś "git bare-init" na swoim serwerze i stworzyli myapp.Git, należy:

    git remote add origin ssh://example.com/var/git/myapp.git
    git push origin master
    
  3. po tym, użytkownicy powinni mieć możliwość

    git clone http://example.com/var/git/myapp.git
    

Uwaga: zakładam, że masz twój serwer działa. Jeśli nie, to się nie uda. Dobrym sposobem na to tutaj.

dodał:

dodaj zdalną gałąź:

git push origin master:new_feature_name

sprawdź, czy wszystko jest w porządku (fetch origin i lista usuniętych gałęzi):

git fetch origin
git branch -r

utwórz lokalną gałąź i śledzić zdalną gałąź:

git checkout -tb new_feature_name origin/new_feature_name

aktualizuj wszystkie:

git pull

Ja po prostu robię

git push -u origin localBranch:remoteBranchToBeCreated

już sklonowany projekt.

Git tworzy nową gałąź o nazwie remoteBranchToBeCreated pod moimi коммитами zrobiłem w localBranch.


edit nieaktualne, po prostu użyć git push -u origin $BRANCHNAME


użyj git publish-branchróżne narzędzia Git Williama (gitorious repo a klon).

dobrze, nie Rubina, tak, że-nie zważając na gwarancji! - weź trzy ostatnie wiersze scenariusza i utwórz skrypt 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}

uruchom git-publish-branch REMOTENAME BRANCHNAME, gdzie REMOTENAME zwykle jest origin (można zmodyfikować skrypt, aby wziąć origin domyślnie, tak dalej...)


aby utworzyć nową gałąź, odłączywszy się od istniejącej gałęzi

git checkout -b <new_branch>

a następnie kliknij tę nową gałąź w repozytorium za pomocą

git push -u origin <new_branch>

to tworzy i popycha wszystkie lokalne commit do nowo utworzonej zdalnej gałęzi origin/<new_branch>


zrobiłem pseudonim, tak, że za każdym razem, gdy tworzę nową gałąź, on będzie naciskać i śledzić zdalną gałąź odpowiednio. Umieścić kolejny kawałek w :

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

: po prostu wpisz gcb thuy/do-sth-koolthuy/do-sth-kool - To moja nowa nazwa oddziału.


do wersji GitLab do 1.7 użyj:

git checkout -b name_branch

(name_branch, ex :master)

aby przenieść go do zdalnego repozytorium, wykonaj:

git push -u origin name_new_branch

(name_new_branch, przykład: feature)


opierając się trochę na odpowiedzi tutaj, wybrałem się na spacer proces ten w prosty skrypt Bash, który, oczywiście, można używać jako alias Git.

ważnym uzupełnieniem dla mnie jest to, że zmusza mnie uruchamiać testy jednostkowe przed zatwierdzeniem i przekazuje aktualną nazwę domyślnej gałęzi.

$ 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 "" ]
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

aby pobrać lokalną gałąź publicznego repozytorium, trzeba cd w publicznym repozytorium, a następnie użyj następujący kod:

git push -u origin branchname