Питання Зробити існуючу гілку відстеження віддаленої гілки?


Я знаю, як створити нову гілку, яка стежить за віддаленими філіями, але Як зробити існуючий відгалуження віддаленою гілкою?

Я знаю, що можу просто редагувати .git/config файл, але, здається, повинен бути простий спосіб.


3080
2018-02-06 15:14


походження


Як зазначено нижче, для існуючої гілки ви можете використовувати git push -u origin branch-name. - Zags
Для довідки в git branch документація.
Якщо місцевій гілці є поточна гілка, а місцева філія вже не відстежує пульт, git pull часто надаватиме корисні повідомлення про відповідну команду для встановлення інформації про відстеження - billrichards
Це дратує, коли хтось вивчає git, щоб показати посилання на документацію git. Ця документація, здається, написана для людей, що вже знайте, що вони роблять з git. - Felipe Alvarez
як це стосується Git 2.10, слід спочатку перевірити місцевий відділ, а потім зробити це git branch --set-upstream-to origin/<branch> - Mahdi Javaheri


Відповіді:


Дана галузь foo і пульт дистанційного керування upstream:

Як на Git 1.8.0:

git branch -u upstream/foo

Або, якщо місцеве відділення foo не є поточною галуззю:

git branch -u upstream/foo foo

Або, якщо ви хочете ввести довші команди, вони еквівалентні двом вище:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

З Git 1.7.0:

git branch --set-upstream foo upstream/foo

Примітки:

Всі вищевказані команди викликають локальну гілку foo відстежувати віддалену гілку foo з дистанційного upstream. Старий (1.7.x) синтаксис застарілий на користь нового (1.8+) синтаксису. Новий синтаксис має бути більш інтуїтивним і простішим для запам'ятовування.


Дивись також: Чому я повинен робити `--set-upstream 'весь час?


3752
2018-02-18 03:06



Чи "висхідний" назва дистанційного керування? тобто, що більшість називатиметься "походженням" за замовчуванням? - Andrew Vit
@ Андрю: Так. git branch --set-upstream master origin/master буде еквівалентно тому, що автоматично робиться, коли ви спочатку клонуєте сховище. - Dan Moulding
У відповідній примітці додавання цього у ваш gitconfig чудово: "[push] default = tracking" це зробить його таким, що штовхає буде те ж саме місце, що тягне з :) - jpswain
Я отримую "фатальний: недійсне ім'я об'єкта:" origin / master "." - joachim
git push -u origin foo  через - Cotton


Ви можете зробити наступне (якщо ви перевірено на майстер і хочете натиснути до віддаленого майстра):

Налаштуйте "віддалене", якщо у вас його ще немає

git remote add origin ssh://...

Тепер налаштувати майстер, щоб знати для відстеження:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

І поштовх:

git push origin master

206
2018-03-09 08:50



це дійсно потрібно віддаленого і відгалуження в поштовх? Я маю на увазі, вам це потрібно тільки, якщо ваша зареєстрована гілка не така, яку ви хочете натиснути, вірно? - Doppelganger
Так - але з пам'яті ви можете бути явними для першого натискання. Можна легко перевірити, звичайно ... :) - Paul Hedderly
+1 Це відповідь для користувачів Windows, які застрягли в попередньому перегляді "msysgit", тобто до 1,8. Дякую за це. - John
Це єдина відповідь, яка працювала для мене. Коли я спробував прийняту відповідь, щоб встановити вихідний пульт для існуючої гілки, я отримав: error: the requested upstream branch 'upstream/master' does not exist. - Steve K
@SteveK, що, швидше за все, викликається вашим поточним потоком originі ні upstream. - umläute


Я роблю це як побічний ефект від натискання -u варіант, як у

$ git push -u origin branch-name

Еквівалентний довгий варіант є --set-upstream.

The git-branch команда також розуміє --set-upstream, але його використання може бути заплутаним. Версія 1.8.0 змінює інтерфейс.

git branch --set-upstream застаріла і може бути вилучена у порівняно віддаленому майбутньому. git branch [-u|--set-upstream-to] був введений з розумним порядком аргументів.

...

Це було спокусливо сказати git branch --set-upstream origin/master, але це говорить Gіt, щоб організувати місцевий підрозділ "origin / master" для інтеграції з поточно відібраною гілкою, що навряд чи означає те, що означає користувач. Опція застаріла; скористайтеся новим --set-upstream-to (з коротким і солодким -u) замість цього.

Скажімо, у вас місцевий foo галузь і хочемо, щоб це трактувало галузь з тією ж назвою, що і вгору. Зробіть це таким

$ git branch foo
$ git branch --set-upstream-to=origin/foo

або просто

$ git branch --set-upstream-to=origin/foo foo

130
2017-10-02 16:24



Це набагато краще рішення IMO - Nils_e


Ви можете знайти git_remote_branch інструмент корисний. Він пропонує прості команди для створення, публікації, видалення, відстеження та перейменування віддалених філій. Одна хороша особливість полягає в тому, що ви можете попросити a grb команда пояснити, що команда git виконуватиме.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



є grb стандартна команда? Доступно в якому пакеті? - Jaseem
GRB - це рубіновий перлик, до якого можна звернутися, як це пояснено їхні гітбуби - mcabrams
ОР задає питання про сам Гіт. Отже, не введіть новий інструмент, ймовірно, буде краще. - zeekvfu
GRB є псевдонімом для git-rebase на моїй установці macOS. Я цього не зробив :) - highmaintenance


Насправді для прийнятої відповіді на роботу:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



Місцевий відділ вже відстежує філію, тому ми можемо припустити, що віддалений репо вже додано. - Doppelganger
Допплергенгер: дивіться коментарі Джоакіма до прийнятої відповіді. У будь-якому випадку припущення легко відрізняються - це те, що робить речі таким цікавим;) - Hedgehog


Я вважаю, що ще в Git 1.5.x можна було б створити місцеву гілку $BRANCH відстежувати віддалену гілку origin/$BRANCH, подобається це.

Враховуючи це $BRANCH і origin/$BRANCH існує, і ви ще не перевірили $BRANCH (відключіть, якщо у вас є), виконайте:

git branch -f --track $BRANCH origin/$BRANCH

Це відтворюється $BRANCH як відстеження гілки. The -f незважаючи на це, змушує створення $BRANCH існуючих вже. --track є необов'язковим, якщо зазвичай існують стандартні значення (тобто параметр git-config) branch.autosetupmerge правда).

Зауважте, якщо origin/$BRANCH ще не існує, ви можете створити його, натискаючи місцевий $BRANCH у віддалений сховище з:

git push origin $BRANCH

Далі слідує попередня команда, щоб просунути місцеву гілку в галузь відстеження.


40
2017-07-28 09:33



git push origin $BRANCH це те, що я шукав. - User
Пробуваючи всілякі рішення, включаючи налаштування вищевказаного потоку, як описано вище, нічого не спрацював. Все, що я хотіла зробити, - це витягнути 1 нове повідомлення в мою локальну гілку з віддаленого, і я спочатку не встановив відстеження. Команда git branch -f --track $BRANCH origin/$BRANCH робить трюк. - DemitryT


1 - оновіть свої локальні метадані за допомогою: git fetch - все

enter image description here

2- показати свої віддалені та місцеві відділення, використовуючи: гіт-гілка-а , див. наступний знімок екрана

enter image description here

3 - перейдіть до цільової гілки, яку хочете пов'язати з пультом: use

git checkout branchname

приклад:

enter image description here 

4. Зв'яжіть місцеву філію з віддаленою філією, використовуючи:

git branch - set-upstream-to nameOfRemoteBranch

Н. Б.: nameOfRemoteBranch : копіювати з виходу з кроку 2 "git branch -r"

Приклад використання:

enter image description here


28
2018-06-06 14:21



Це спрацювало. Дякую - Rahal Kanishka
Переважно легкий і простий відповідь. - vibs2006


Переконайтеся, що ви запускаєте:

git config push.default tracking

щоб мати можливість натискати безперебійну ситуацію


22
2017-08-29 21:38



Це може бути зручно. Однак ми можемо відзначити, що відповідно до git-config(1) ручна сторінка tracking є застарілим синонімом upstream. - FooF


Редагування .git/config ймовірно, найпростіший і швидкий спосіб. У будь-якому випадку це робить команда Gіt для обробки віддалених філій.

Якщо ви не хочете, щоб файл було порушено вручну (і це не так важко), ви завжди можете використовувати git config зробити це ... але знову ж, це просто буде редагувати .git/config файл, у всякому разі.

Є, звичайно, способи автоматичного відстеження віддаленого підрозділу при використанні git checkout (пройшовши --track прапор, наприклад), але ці команди працюють з новий гілки, не існуючі.


21
2018-02-06 15:17





В дуже короткому

git branch --set-upstream yourLocalBranchName origin/develop

Це зробить вас yourLocalBranchName відстежити віддалену гілку з назвою develop.


16
2017-10-09 07:19



@ Перевірка кваліфікації відповідь Грега - використовувати git push -u origin branch (або --set-upstream-to) замість цього - Tobias Kienzler
@ Маднік, у чому різниця між --set-upstream і --track? Я не зовсім розумію, чому я повинен використовувати один над іншим. - A-B-B