Jak wypchnąć nową lokalną gałąź do zdalnego repozytorium Git i ją śledzić?
Chcę być w stanie wykonać:
Utwórz lokalną gałąź w oparciu o inną (zdalną lub lokalną) gałąź (poprzez
git branch
LUBgit checkout -b
)Push the local branch do zdalnego repozytorium (publikuj), ale zrób to możliwość śledzenia, więc
git pull
igit push
będą działać natychmiast.
Wiem o --set-upstream
w Git 1.7, ale to jest akcja post-creation. Chcę znaleźć sposób na podobną zmianę przy popychaniu gałęzi do zdalne repozytorium.
13 answers
W Git 1.7.0 i nowszych, możesz sprawdzić nową gałąź:
git checkout -b <branch>
Edycja plików, dodawanie i zatwierdzanie. Następnie wciśnij -u
(skrót od --set-upstream
) wariant:
git push -u origin <branch>
Git skonfiguruje informacje o śledzeniu podczas push.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-23 20:27:17
Jeśli nie udostępniasz swojego repo innym, jest to przydatne, aby wypchnąć wszystkie twoje gałęzie do pilota i --set-upstream
śledzić poprawnie dla Ciebie:
git push --all -u
(nie dokładnie to, o co prosiła operacja, ale ten jednowierszowy jest dość popularny)
Jeśli dzielisz się repo z innymi, to nie jest to dobra forma, ponieważ zapchasz repo wszystkimi swoimi podejrzanymi eksperymentalnymi gałęziami.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-19 01:53:50
Przed wprowadzeniem git push -u
, nie było git push
opcji, aby uzyskać to, czego pragniesz. Trzeba było dodać nowe instrukcje konfiguracji.
Jeśli utworzysz nową gałąź używając:
$ git checkout -b branchB
$ git push origin branchB:branchB
Możesz użyć polecenia git config
, aby uniknąć bezpośredniej edycji pliku .git/config
.
$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB
Lub możesz edytować ręcznie plik .git/config
, aby mieć informacje o śledzeniu do tej gałęzi.
[branch "branchB"]
remote = origin
merge = refs/heads/branchB
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-01 19:54:34
Mówiąc najprościej, aby utworzyć nowylokalny oddział , wykonaj:
git branch <branch-name>
Aby wypchnąć go do repozytorium remote , wykonaj:
git push -u origin <branch-name>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 19:30:42
Mała zmiana rozwiązań już podanych tutaj:
-
Utwórz lokalną gałąź na podstawie innej (zdalnej lub lokalnej) gałęzi:
git checkout -b branchname
-
Przepchnij lokalną gałąź do zdalnego repozytorium (publish), ale spraw, aby była śledzona, aby
git pull
igit push
działały natychmiastgit push -u origin HEAD
Użycie {[4] } jest "poręcznym sposobem na przesunięcie bieżącej gałęzi do tej samej nazwy na pilocie". Źródło: https://git-scm.com/docs/git-push W kategoriach Git, HEAD (w uppercase) jest odniesieniem do wierzchołka bieżącej gałęzi (drzewa).
Opcja
-u
jest skrótem od--set-setupstream
. Spowoduje to dodanie referencji śledzenia dla bieżącej gałęzi. możesz to sprawdzić, patrząc w swoje .plik git/config:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-21 20:15:41
Przypuszczam, że już sklonowałeś taki projekt jak:
git clone http://github.com/myproject.git
-
Następnie w lokalnej kopii Utwórz nową gałąź i sprawdź ją:
git checkout -b <newbranch>
-
Załóżmy, że zrobiłeś "Git bare --init" na swoim serwerze i utworzyłeś myapp.git, powinieneś:
git remote add origin ssh://example.com/var/git/myapp.git git push origin master
-
Po tym, użytkownicy powinni być w stanie
git clone http://example.com/var/git/myapp.git
Uwaga: zakładam, że masz uruchomiony serwer. Jeśli nie, to nie zadziała. Dobry poradnik jest tutaj .
Dodano
Dodaj zdalną gałąź:
git push origin master:new_feature_name
Sprawdź, czy wszystko jest dobrze (pobieranie origin i lista zdalnych gałęzi):
git fetch origin
git branch -r
Utwórz lokalną gałąź i śledź zdalną gałąź:
git checkout -tb new_feature_name origin/new_feature_name
Zaktualizuj wszystko:
git pull
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 19:26:59
Po prostu robię
git push -u origin localBranch:remoteBranchToBeCreated
Nad już sklonowanym projektem.
Git tworzy nową gałąź o nazwie remoteBranchToBeCreated
pod moim commitem, który zrobiłem w localBranch
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-21 20:14:25
Edytuj nieaktualne, wystarczy użyć git push -u origin $BRANCHNAME
Użyj git publish-branch
z różnych narzędzi Git Williama (gitorious repo i clone).
Ok, Nie Ruby, więc-ignorując zabezpieczenia! - weź trzy ostatnie linie skryptu i Utwórz skrypt bash, git-publish-branch
:
#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# 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}
Następnie uruchom git-publish-branch REMOTENAME BRANCHNAME
, gdzie nazwa REMOTENAME jest zwykle origin (możesz zmodyfikować skrypt, aby przyjąć origin jako domyślny, itp...)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-22 07:21:59
Aby utworzyć nową gałąź poprzez oddzielenie się od istniejącej gałęzi
git checkout -b <new_branch>
A następnie przepchnąć tę nową gałąź do repozytorium używając
git push -u origin <new_branch>
Tworzy i wypycha wszystkie lokalne commity do nowo utworzonej zdalnej gałęzi origin/<new_branch>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-03 20:36:39
Stworzyłem alias tak, że za każdym razem, gdy utworzę nową gałąź, będzie ona odpowiednio naciskać i śledzić zdalną gałąź. Do pliku .bash_profile
wrzucam następujący fragment:
# 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
Użycie : wystarczy wpisać gcb thuy/do-sth-kool
z thuy/do-sth-kool
to moja nowa nazwa gałęzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-05 10:11:01
Dla GitLab w wersji przed 1.7, użyj:
git checkout -b name_branch
(nazwa_branch, ex: master)
Aby wypchnąć go do zdalnego repozytorium, wykonaj:
git push -u origin name_new_branch
(nazwa_new_branch, przykład: feature)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-15 16:54:01
Opierając się nieco na odpowiedziach tutaj, zawinąłem ten proces jako prosty skrypt Bash, który oczywiście może być również użyty jako alias Git.
Ważne dla mnie jest to, że monituje mnie to do uruchomienia testów jednostkowych przed zatwierdzeniem i domyślnie przechodzi w bieżącej nazwie 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 "$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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-08 18:39:08
Aby przesłać lokalną gałąź publicznego repozytorium, musisz cd
do publicznego repozytorium, a następnie użyć następującego kodu:
git push -u origin branchname
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 19:31:15