Git витягнути з іншого сховища


95

У мене є сховище Generic, яке називається загальним додатком. Я розгалужив його до сховища із назвою Acme, яке просто спирається на сховище , що зберігається в програмі, Genericі додає до нього фірмовий стиль Acme Co.

Якщо я вношу зміни до основної функціональності в Generic, я хочу оновити Acmeсховище останніми змінами, внесеними до основної функціональності в Generic. Як би я це зробив?

Наскільки я можу зрозуміти, я, по суті, намагаюся об'єднати зміни, внесені у сховище вище за потоком, у поточну форку.

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

Відповіді:


135

Виконайте наступну команду у своєму Acmeрепо. Він додає нове віддалене сховище з назвою, upstreamяке вказує на Genericрепо.

git remote add upstream https://location/of/generic.git

Потім ви можете об’єднати будь-які зміни, внесені до Genericпоточної гілки, за Acmeдопомогою такої команди:

git pull upstream

Якщо ви просто хочете, щоб він завантажив зміни без автоматичного об’єднання, використовуйте git fetchзамість git pull.

Якщо ви хочете відключити надсилання до цього сховища, встановіть URL-адресу push для недійсної URL-адреси, використовуючи щось на зразок

git config remote.upstream.pushurl "NEVER GONNA GIVE YOU UP"

Git тепер буде кричати на вас про те, що ви не можете знайти репо, якщо ви спробуєте натиснути на upstream(і вибачте за Rickroll, але це був перший випадковий рядок, який з’явився в моїй голові).


6
Чудово, дякую. Ще одна річ: чи є спосіб зробити цей віддалений доступ лише для читання, щоб випадково не натиснути на нього?
Libbux

1
Я почав відповідати, але я бачу, що Макловін вже відредагував свою відповідь, включивши це.
Френкі Саймон

4
Починаючи з git 2.9, вам потрібно буде вказати прапор --allow-unrelated-histories. Див stackoverflow.com/a/37938036/3799847
sfinks_29

5
Мені потрібно було видатиgit pull --allow-unrelated-histories upstream master
Алек Якобсон

Я спробував це, але git pull upstreamпросто зависає ... будь-які ідеї?
Паулу Карвальо

6

Для того, щоб витягнути певну гілку з іншого репо, ви можете скористатися наведеною нижче командою git.

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