Saya punya proyek dengan banyak cabang. Saya telah mendorong mereka ke GitHub , dan sekarang setelah orang lain mengerjakan proyek ini, saya harus menarik cabangnya dari GitHub. Ini berfungsi baik di master. Tetapi katakan bahwa seseorang membuat cabang xyz
. Bagaimana saya bisa menarik cabang xyz
dari GitHub dan menggabungkannya ke cabang xyz
di saya localhost
?
Saya sebenarnya punya jawaban di sini: Dorong dan tarik cabang di Git
Tapi saya mendapatkan kesalahan "! [Ditolak]" dan sesuatu tentang "non fast forward".
Ada saran?
git fetch origin --force
", tetapi harap baca dokumentasi sebelum melakukannya.Jawaban:
Itu karena Git tidak dapat menggabungkan perubahan dari cabang menjadi master Anda saat ini. Katakanlah Anda telah memeriksa cabang
master
, dan Anda ingin bergabung dengan cabang jarak jauhother-branch
. Ketika Anda melakukan ini:Git pada dasarnya melakukan ini:
Artinya,
pull
hanyafetch
diikuti oleh amerge
. Namun, ketikapull
-ing, Git hanya akan bergabungother-branch
jika ia dapat melakukan penggabungan maju-cepat . Sebuah fast-forward merge adalah gabungan di mana kepala cabang Anda mencoba untuk menggabungkan ke dalam adalah keturunan langsung dari kepala cabang yang ingin bergabung. Misalnya, jika Anda memiliki pohon sejarah ini, maka penggabunganother-branch
akan menghasilkan penggabungan maju-cepat:Namun, ini bukan penggabungan maju-cepat:
Untuk mengatasi masalah Anda, pertama ambil cabang jarak jauh:
Kemudian gabungkan ke cabang Anda saat ini (saya akan menganggap itu
master
), dan memperbaiki konflik penggabungan:sumber
git fetch -f
telah memperbaiki masalah saya! Terima kasih!xzy
menjadi cabang lokalmaster
, yang tidak tersirat oleh pertanyaan awal; "Bagaimana saya bisa menarik xyz cabang dari GitHub dan menggabungkannya menjadi xyz cabang di localhost saya?"Cukup lacak cabang jarak jauh Anda secara eksplisit dan sederhana
git pull
akan melakukan apa yang Anda inginkan:Yang terakhir adalah operasi lokal.
Atau bahkan lebih cocok dengan dokumentasi GitHub tentang forking :
sumber
Anda bisa menarik cabang ke cabang dengan perintah berikut.
Ketika Anda berada di cabang master, Anda juga dapat terlebih dahulu checkout cabang seperti:
Ini menciptakan cabang baru, "xyz", dari master dan langsung memeriksanya.
Maka Anda melakukannya:
Ini menarik cabang baru ke
xyz
cabang lokal Anda .sumber
Cara terbaik adalah:
sumber
git fetch
akan mengambil daftar cabang terbaru.Sekarang kamu bisa
git checkout MyNewBranch
Selesai :)
Untuk info lebih lanjut lihat dokumen: git fetch
sumber
Saya tidak yakin saya sepenuhnya memahami masalahnya, tetapi menarik cabang yang ada dilakukan seperti ini (setidaknya itu bekerja untuk saya :)
Ini dengan asumsi bahwa cabang lokal Anda dibuat dari asal / CABANG.
sumber
Ini membantu saya untuk mendapatkan cabang jauh sebelum menggabungkannya ke yang lain:
sumber
Sederhananya, Jika Anda ingin menarik dari GitHub cabang
the_branch_I_want
:sumber
Biasanya jika Anda hanya memiliki repo yang ditugaskan untuk kode Anda maka gitreponame akan menjadi asal.
Jika Anda bekerja pada dua repo seperti satu adalah lokal dan satu lagi untuk remote seperti Anda dapat memeriksa daftar repo dari git remote -v . ini menunjukkan berapa banyak repo yang ditugaskan ke kode Anda saat ini.
BranchName harus ada ke dalam gitreponame yang sesuai.
Anda dapat menggunakan dua perintah berikut untuk menambah atau menghapus repo
sumber
Anda juga dapat melakukannya
memperbaiki konflik gabungan jika ada
-r adalah untuk rebase. Ini akan membuat struktur cabang Anda
untuk
Ini akan mengarah pada riwayat bersih. Catatan: Jika Anda telah mendorong cabang lain ke asal (atau remote lainnya), Anda mungkin harus mendorong cabang Anda setelah rebase.
sumber
aku melakukannya
Dari pada
Seperti yang disarankan oleh @innaM. Ketika saya menggunakan versi upstream, katanya 'fatal: Bukan nama objek yang valid:' upstream / remote_branch_name ''. Saya tidak melakukan
git fetch origin
seperti yang disarankan komentar, tetapi hanya digantiupstream
denganorigin
. Saya kira mereka setara.sumber
untuk menarik cabang dari GitHub dapat Anda gunakan
Pastikan bahwa nama cabang persis sama.
sumber