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.

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).


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.