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?
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!
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
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.
git fetch
akan ambil terbaru daftar cabang-cabang.
Sekarang anda bisa git checkout MyNewBranch
Selesai :)
Untuk info lebih lanjut lihat dokumen: git fetch
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.
git pull <gitreponame> <branchname>
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 <gitreponame> <repourl>
git remote remove <gitreponame>
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
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.