Как да преместите нов локален клон в отдалечено хранилище на Git и да го проследите?

Искам да мога да направя следното:

  • Създайте локален клон, базиран на друг (отдалечен или локален) клон (чрез git branch или git checkout -b )

  • Щракнете върху локалния клон към отдалеченото хранилище (публикувайте), но направете това, за да може git pull и git push започне да работи веднага.

Как да направите това?

Знам за --set-upstream в Git 1.7, но това е действие след създаването. Искам да намеря начин да направя подобни промени, когато щракнете върху клон на отдалечено хранилище.

3689
04 мая '10 в 15:58 2010-05-04 15:58 Рони Янив попита на 04.05 '10 в 15:58 2010-05-04 15:58
@ 13 отговора

В Git 1.7.0 и по-късно можете да проверите новия клон:

 git checkout -b <branch> 

Редактиране на файлове, добавяне и фиксиране. След това кликнете с опцията -u (съкратено от --set-upstream ) :

 git push -u origin <branch> 

Git ще настрои проследяващата информация, докато кликвате.

5823
03 июня '11 в 23:50 2011-06-03 23:50 отговорът е даден Daniel Ruoso 03 юни '11 в 23:50 2011-06-03 23:50

Ако не споделяте вашето репо с други потребители, това е полезно, за да пренесете всичките си клонове на отдалечено, а --set-upstream точно за вас:

 git push --all -u 
border=0

(Не точно това, което ОП иска, но този едноредов интерфейс е доста популярен)

Ако споделяте вашето репо с други хора, това не е много добра форма, тъй като ще попълвате репо с всичките си странни експериментални клонове.

449
20 янв. Отговорът е даден от ErichBSchulz Jan 20 2014-01-20 14:36 '14 в 14:36 2014-01-20 14:36

Преди въвеждането на git push -u не е имало опция git push за да получите това, което искате. Трябва да сте добавили нови инструкции за конфигуриране.

Ако създавате нов клон, използвайте:

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

Можете да използвате командата git config да избегнете директно редактиране на .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 
133
04 мая '10 в 16:03 2010-05-04 16:03 Отговор е даден от Lohrun на 04 май '10 в 16:03 2010-05-04 16:03

Просто казано, за да създадете нов местен клон, направете:

 git branch <branch-name> 

За да го преместите в отдалеченото хранилище, изпълнете следните стъпки:

 git push -u origin <branch-name> 
111
24 апр. отговор, даден от piyushmandovra на 24 април 2015-04-24 15:09 '15 в 15:09 2015-04-24 15:09

Малка вариация на вече предложените решения:

  1. Създайте локален клон на базата на друг (отдалечен или локален) клон:

     git checkout -b branchname 
  2. Кликнете върху местния клон към отдалеченото хранилище (публикувайте), но го направете проследим, така че git pull и git push ще работят незабавно

     git push -u origin HEAD 

    Използването на HEAD е "удобен начин да преведете текущия клон на същото име на дистанционното управление". Източник: https://git-scm.com/docs/git-push По отношение на Git HEAD (горен регистър) е връзка към върха на текущия клон (дърво).

    Опцията -u е кратка за --set-setupstream . Това ще добави връзка за проследяване за текущия клон. Можете да проверите това, като погледнете в .git / config файла:

    2019

Предполагам, че вече сте клонирали проекта, например:

 git clone http://github.com/myproject.git 
  • След това създайте нов клон в местното копие и го проверете:

     git checkout -b <newbranch> 
  • Да предположим, че сте създали "git bare -init" на вашия сървър и създадохте myapp.git, трябва да:

     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 

Проверете дали всичко е наред (изберете началото и списъка на отдалечените клонове):

 git fetch origin git branch -r 

Създайте локален клон и проследете отдалечения клон:

 git checkout -tb new_feature_name origin/new_feature_name 

Актуализиране на всички:

 git pull 
27
Отговорът е даден от VP. 2010-05-04 16:04 04 май '10 в 16:04 2010-05-04 16:04

Просто правя

 git push -u origin localBranch:remoteBranchToBeCreated 

над вече клониран проект.

Git създава нов клон, наречен remoteBranchToBeCreated под remoteBranchToBeCreated ми remoteBranchToBeCreated което направих в localBranch .

24
20 марта '17 в 14:13 2017-03-20 14:13 отговорът беше даден от Арда на 20 март, 17 в 14:13 2017-03-20 14:13

редактирайте остарели, просто използвайте git push -u origin $BRANCHNAME


Използвайте git publish-branch от различни инструменти Git на Уилям ( gitorious репо и клонинг ).

Е, няма Ruby, така че игнорирайки предпазните мерки! - вземете последните три реда на скрипта и създайте bash скрипт, git-publish-branch :

19
04 мая '10 в 16:03 2010-05-04 16:03 отговори на Tobias Kienzler на 04 май '10 в 16:03 2010-05-04 16:03

За да създадете нов клон, отделяйки го от съществуващия клон

git checkout -b <new_branch>

и след това щракнете върху тази нова нишка в хранилището, като използвате

git push -u origin <new_branch>

Това създава и изтласква всички локални съобщения към новосъздадения origin/<new_branch> отдалечения origin/<new_branch>

16
03 июня '15 в 23:36 2015-06-03 23:36 отговорът е даден от cptjack юни 03 '15 в 23:36 2015-06-03 23:36

Направих псевдоним, така че всеки път, когато създавам нов клон, той ще изтрие и проследи по подходящ начин отдалечения клон. Сложих следния фрагмент в .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 - това е новото ми име на клон.

7
05 янв. отговорът е даден от Thuy Trinh 05 Jan 2016-01-05 13:11 '16 в 13:11 2016-01-05 13:11

За GitLab версия 1.7, използвайте:

git checkout -b name_branch

(name_branch, напр .: магистър)

За да го изпратите в отдалечено хранилище, изпълнете следните стъпки:

git push -u origin name_new_branch

(name_new_branch, пример: функция)

6
06 дек. Отговорът е даден Fadid 06 dec. 2016-12-06 21:42 '16 в 21:42 2016-12-06 21:42

Позовавайки се малко на отговорите тук, аз завърших този процес като прост 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} eg 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} eg 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 
1
21 апр. Отговорът е даден Брад Паркс 21 апр. 2017-04-21 16:30 '17 в 16:30 часа 2017-04-21 16:30

За да заредите локалния клон на публичното хранилище, трябва да отворите споделеното хранилище и след това да използвате следния код:

 git push -u origin branchname 
-8
26 июня '15 в 12:37 2015-06-26 12:37 отговорът е даден от шанкар кумар 26 юни '15 в 12:37 2015-06-26 12:37

Други въпроси относно таговете или Задайте въпрос