Git pull dari repositori lain

98

Saya memiliki sebuah repositori bernama Generic, yang merupakan aplikasi umum. Saya telah mem-forknya ke dalam repositori yang disebut Acme, yang hanya dibangun di atas Genericrepositori yang disimpan aplikasi dan menambahkan branding Acme Co ke dalamnya.

Jika saya membuat perubahan pada fungsionalitas inti di Generic, saya ingin memperbarui Acmerepositori dengan perubahan terbaru yang telah saya buat pada fungsionalitas inti di Generic. Bagaimana saya melakukannya?

Sejauh yang saya tahu, pada dasarnya saya mencoba menggabungkan perubahan yang dibuat dalam repositori hulu ke dalam garpu saat ini.

Jika itu berarti, saya mencoba melakukan ini karena saya memiliki aplikasi generik yang kemudian saya bangun dan beri merek untuk klien individu (seperti Acmedalam contoh ini). Jika ada cara yang lebih bersih untuk melakukan ini, beri tahu saya.

Libbux
sumber

Jawaban:

140

Keluarkan perintah berikut di Acmerepo Anda . Itu menambahkan repositori jarak jauh baru bernama upstreamyang menunjuk ke Genericrepo.

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

Anda kemudian dapat menggabungkan setiap perubahan yang dibuat ke Genericcabang saat ini Acmedengan perintah berikut:

git pull upstream

Jika Anda hanya ingin men-download perubahan tanpa otomatis penggabungan, menggunakan git fetchbukan git pull.

Jika Anda ingin menonaktifkan mendorong ke repositori itu, setel URL push ke URL yang tidak valid menggunakan sesuatu seperti

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

Git sekarang akan berteriak pada Anda tentang tidak dapat menemukan repo jika Anda mencoba untuk mendorong upstream(dan maaf tentang Rickroll, tapi itu adalah string acak pertama yang muncul di kepala saya).

McLovin
sumber
6
Luar biasa, terima kasih. Satu hal lagi: adakah cara agar saya dapat membuat remote ini hanya-baca, jadi saya tidak sengaja mendorongnya?
Libbux
1
Saya mulai menjawab tetapi saya melihat McLovin sudah mengedit jawabannya untuk memasukkan itu.
Frankie Simon
4
Sejak git 2.9, Anda perlu menentukan flag --allow-unrelated-histories. Lihat stackoverflow.com/a/37938036/3799847
sfinks_29
5
Saya perlu menerbitkangit pull --allow-unrelated-histories upstream master
Alec Jacobson
Saya mencobanya tetapi git pull upstreamhanya hang ... ada ide?
Paulo Carvalho
11

Untuk menarik cabang tertentu dari repo yang berbeda, Anda dapat menggunakan perintah git di bawah ini.

git pull <git_url> <branch> --allow-unrelated-histories
vin
sumber