Git pull cabang tertentu dari GitHub

Saya memiliki sebuah proyek dengan beberapa cabang. I've telah mendorong mereka untuk GitHub, dan sekarang bahwa ada orang lain yang bekerja pada proyek saya perlu untuk menarik mereka cabang dari GitHub. Ia bekerja baik di master. Tapi mengatakan bahwa seseorang menciptakan cabang xyz. Bagaimana bisa aku tarik cabang xyz dari GitHub dan bergabung menjadi cabang xyz pada saya localhost?

Aku benar-benar memiliki jawaban saya di sini: https://stackoverflow.com/questions/1072261/push-and-pull-branches-in-git

Tapi saya mendapatkan error "! [ditolak]" dan "non-cepat maju".

Ada saran?

Mengomentari pertanyaan (2)
Larutan

Tetapi saya mendapatkan error "! [ditolak]" dan "non-cepat maju"

Yang's karena Git dapat't menggabungkan perubahan dari cabang-cabang ke master saat ini. Let's mengatakan anda'telah memeriksa cabang master, dan anda ingin bergabung di remote branch lainnya-cabang. Ketika anda melakukan hal ini:

$ git pull origin other-branch

Git pada dasarnya melakukan hal ini:

$ git fetch origin other-branch && git merge other-branch

Artinya, menarik hanya mengambil diikuti oleh bergabung. Namun, ketika menarik-ing, Git akan hanya menggabungkan lainnya-cabang if dapat melakukan cepat-maju merge. A cepat-maju menggabungkan gabungan di mana kepala cabang anda mencoba untuk bergabung menjadi adalah keturunan langsung kepala cabang yang ingin anda gabungkan. Misalnya, jika anda memiliki sejarah pohon, maka penggabungan lainnya-cabang akan mengakibatkan cepat-maju merge:

O-O-O-O-O-O
^         ^
master    other-branch

Namun, ini akan not menjadi cepat-maju merge:

    v master
O-O-O
\
 \-O-O-O-O
         ^ other-branch

Untuk memecahkan masalah anda, pertama mengambil remote branch:

$ git fetch origin other-branch

Kemudian bergabung ke anda saat ini cabang (I'll menganggap bahwa's guru), dan memperbaiki setiap gabungan konflik:

$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit    # And commit the merge!
Komentar (7)

Hanya melacak remote cabang secara eksplisit dan sederhana git pull akan melakukan apa yang anda inginkan:

git branch -f remote_branch_name origin/remote_branch_name
git checkout remote_branch_name

Yang terakhir adalah operasi lokal.

Atau bahkan lebih pas dengan GitHub dokumentasi pada forking:

git branch -f new_local_branch_name upstream/remote_branch_name
Komentar (1)

Anda bisa menarik satu cabang ke cabang dengan perintah berikut.

git pull {repo} {remotebranchname}:{localbranchname}

git pull origin xyz:xyz

Ketika anda berada di cabang master anda juga bisa pertama checkout cabang seperti:

git checkout -b xyz

Hal ini menciptakan sebuah cabang baru, "xyz", dari guru dan langsung cek it out.

Kemudian anda lakukan:

git pull origin xyz

Ini menarik baru cabang lokal anda xyz cabang.

Komentar (3)

Cara terbaik adalah:

git checkout -b  /
Komentar (1)

git fetch akan ambil terbaru daftar cabang-cabang.

Sekarang anda bisa git checkout MyNewBranch

Selesai :)


Untuk info lebih lanjut lihat dokumen: git fetch

Komentar (0)

Saya tidak yakin aku sepenuhnya memahami masalah, tapi menarik yang ada di cabang ini dilakukan seperti ini (setidaknya itu bekerja untuk saya :)

git pull origin BRANCH

Ini adalah asumsi bahwa cabang lokal anda dibuat off dari asal/CABANG.

Komentar (0)

Ini membantu saya untuk mendapatkan branch jauh sebelum penggabungan ke lain:

git fetch repo xyz:xyz
git checkout xyz
Komentar (0)
git pull  

Biasanya jika anda hanya memiliki repo ditugaskan untuk kode anda maka gitreponame akan asal.

Jika anda bekerja pada dua repo's seperti satu lokal dan satu lagi untuk remote seperti anda dapat memeriksa repo's daftar dari git remote -v. hal ini menunjukkan berapa banyak repo's ditugaskan untuk kode anda saat ini.

BranchName harus ada ke yang sesuai gitreponame.

anda dapat menggunakan dua perintah berikut untuk menambahkan atau menghapus repo's

git remote add  
git remote remove 
Komentar (0)

Sederhananya, Jika anda ingin tarik dari GitHub cabang the_branch_I_want:

git fetch origin
git branch -f the_branch_I_want origin/the_branch_I_want
git checkout the_branch_I_want
Komentar (0)

anda juga dapat melakukan

git pull -r origin master

memperbaiki gabungan konflik jika ada

git rebase --continue

-r adalah untuk rebase. Ini akan membuat anda struktur cabang dari

        v  master       
o-o-o-o-o
     \o-o-o
          ^ other branch

untuk

        v  master       
o-o-o-o-o-o-o-o
              ^ other branch

Hal ini akan menyebabkan debu sejarah. Catatan: jika anda telah didorong lain-cabang ke asal( atau jarak jauh lainnya), anda mungkin harus memaksa mendorong cabang setelah rebase.

git push -f origin other-branch
Komentar (0)

Aku

git branch -f new_local_branch_name origin/remote_branch_name

Bukan

git branch -f new_local_branch_name upstream/remote_branch_name

Seperti yang disarankan oleh @innaM. Ketika saya digunakan hulu versi, itu kata 'fatal: Tidak valid nama objek: 'hulu/remote_branch_name''. Aku tidak melakukan git fetch asal sebagai komentar yang disarankan, tapi bukan hanya diganti hulu dengan asal. Saya kira mereka setara.

Komentar (0)