Чого допомагає досягти 'git remote add upstream'?


77

Я читав на: https://wiki.diasporafoundation.org/Git_workflow#Rebase_your_development_branch_on_the_latest_upstream

Ось витяг:

Ваш репозиторій оновлений

Для отримання останніх оновлень із стовбура розробки зробіть одноразову установку для встановлення основного репозиторію GitHub як віддаленого, ввівши:

$ git remote add upstream git://github.com/diaspora/diaspora.git

Перебазуйте свою галузь розвитку на останніх версіях

Щоб ваша гілка розробки була в курсі, перебазуйте свої зміни на вершині поточного стану майстра вищої версії. Подивіться, що таке git-rebase? нижче, щоб дізнатись більше про перебазування.

Якщо ви встановили гілку висхідного потоку, як описано вище, та гілку розробки з назвою 100-retweet-bugfix, ви б оновлювали вгору, оновлювали локальний майстер і перебазували свою гілку з нього так:

$ git fetch upstream

$ git checkout master

$ git rebase upstream/master

$ git checkout 100-retweet-bugfix

[переконайтесь, що все здійснено за необхідності у гілці]

$ git rebase master

Чому в цьому випадку потрібне додавання віддаленого висхідного потоку? Не міг я щойно зробити:

$ git checkout master

$ git pull origin master

$ git checkout 100-retweet-bugfix

[переконайтесь, що все здійснено за необхідності у гілці]

$ git rebase master

ви повинні зробити , git remote addНЕ git add remote...
Мед

Відповіді:


86

Вікі розмовляє з роздільної точки зору. Ви маєте доступ тягнути та штовхати з місця походження, що буде вашим розгалуженням основного репозиторію діаспори. Щоб втягнути зміни з цього основного репозитарію, ви додаєте віддалений "вище за течією" у ваш локальний репо, вказуючи на цей оригінал і витягуючи з нього.

Отже, "походження" - це клон вашого форпо-репо, від якого ви штовхаєте і тягнете. "Upstream" - це назва основного репо, звідки ви тягнете та постійно оновлюєте клон форка, але у вас немає доступу до нього.


1
Дякую @manojlds! У мене є наступне запитання тут: посилання
ben39

16

Це корисно, коли у вас є власний, originякого немає upstream. Іншими словами, у вас може бути власний originрепо, в якому ви робите розробку та локальні зміни, а потім зрідка об’єднуєте upstreamзміни. Різниця між вашим прикладом та виділеним текстом полягає в тому, що ваш приклад передбачає, що ви працюєте безпосередньо з клоном висхідного репо. Виділений текст передбачає, що ви працюєте над клоном власного репо, який, мабуть, спочатку був клоном вище за течією.


Дякую @smparkes! це було дуже корисно. У мене є наступне запитання тут: посилання
ben39

4

Я думаю, що це може бути використано для "зворотного розгалуження"

Якщо у вас є репозиторій Git, і ви вирішили, що він мав би розгалужити інше репо. Ретроактивно ви хотіли б, щоб він став форком, не порушуючи команду, яка використовує репо, вимагаючи, щоб вони націлились на нове репо.

Але я можу помилитися.


Яку цінність приносить ця відповідь після відповіді на запитання 5 років тому? І ви все ще навіть не впевнені у правильній відповіді ...
Мацей Юречко

@MaciejJureczko Я не самотній, роздумуючи, як "ретроактивно розгалужитись", якщо це питання / відповідь обговорює як (що, на мою думку, є, але я не впевнений). Тоді це питання можна було б використати як відповідь на інші запитання. stackoverflow.com/questions/30472771/… ... якщо це спосіб ретроактивного розгалуження, тепер він може знаходитись із цими пошуковими термінами. Мені знадобився час, щоб подумати, що, можливо, додавання сховища вище за течією може бути тим, що я шукав. Якби ОП була єдиною аудиторією, вони б не архівували запитання "5 років тому".
Onceler

2

Візьмемо приклад: Ви хочете внести свій внесок у django, тому ви розгалужуєте його сховище. Поки ви працюєте над вашою функцією, багато людей роблять над оригінальним репо іншими людьми. Отже, код, який ви розробили, не найновіший. встановлення віддаленого висхідного потоку та час від часу його отримання гарантує, що ваше роздільне репо синхронізується з оригінальним репо.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.