Bagaimana mengatasi kesalahan git "bukan sesuatu yang bisa kita gabungkan"

291

Saya baru saja mengalami masalah ketika menggabungkan cabang menjadi master di git. Pertama, saya mendapatkan nama cabang dengan menjalankan git ls-remote. Sebut saja cabang itu "nama cabang". Saya kemudian menjalankan git merge branch-nameperintah dan mendapatkan hasil berikut:

fatal: branch-name - not something we can merge

Bagaimana cara mengatasi kesalahan ini?

Brian
sumber

Jawaban:

356

Seperti ditunjukkan dalam Bagaimana "bukan sesuatu yang bisa kita gabungkan" muncul? , kesalahan ini dapat muncul dari salah ketik nama cabang karena Anda mencoba menarik cabang yang tidak ada.

Jika bukan itu masalahnya (seperti dalam kasus saya), kemungkinan Anda tidak memiliki salinan cabang lokal yang ingin Anda gabungkan. Git membutuhkan pengetahuan lokal dari kedua cabang untuk menggabungkan cabang-cabang itu. Anda bisa menyelesaikan ini dengan memeriksa cabang yang akan digabung dan kemudian kembali ke cabang yang ingin Anda gabungkan.

git checkout branch-name
git checkout master
git merge branch-name

Ini seharusnya bekerja, tetapi jika Anda menerima pesan kesalahan

error: pathspec 'remote-name/branch-name' did not match any file(s) known to git.

Anda perlu mengambil remote (mungkin, tetapi tidak harus, "asal") sebelum memeriksa cabang:

git fetch remote-name
Brian
sumber
3
Ini terjadi pada saya setelah menambahkan remote baru - saya perlu melakukan yang git fetchpertama sebelum menggabungkan cabang jarak jauh.
Jason
mengambil dan checkout cabang dari jarak jauh. git fetch && git checkout BranchName
Juni Brosas
2
Ini terjadi pada saya ketika saya dimasukkan ke proyek yang salah (yaitu repo berbeda yang bahkan tidak memiliki cabang yang ingin saya gabungkan)
JoelFan
1
Jika Anda mencoba menyinkronkan garpu pada baris perintah ( help.github.com/articles/syncing-a-fork ) kesalahan ini mungkin karena Anda melewatkan langkah 0. Apa? Tidak ada langkah 0 terdaftar? Ya, itu sebabnya mudah untuk dilewatkan. "Sebelum Anda dapat menyinkronkan garpu Anda dengan repositori upstream, Anda harus mengonfigurasi remote yang menunjuk ke repositori upstream di Git." <- itu adalah langkah 0. Jika Anda melewati langkah itu Anda mendapatkan kesalahan di atas, yang mungkin Anda masukkan ke Google, membawa Anda ke sini. :-)
Steve Bonds
1
Git requires local knowledge of both branches in order to merge those branches
Gangadhar JANNU
96

Itu saran yang konyol, tapi pastikan tidak ada kesalahan ketik pada nama cabang!

tak ada habisnya
sumber
4
tidak begitu konyol, karena "kesalahan ketik" dapat mengurangi fakta bahwa cabang belum diambil (dan dengan demikian tidak diketahui secara lokal) .. Git melakukan sesuatu yang berbeda dari CVS atau SVN ..
klang
2
Masalahnya juga dapat disebabkan jika nama cabang berisi karakter seperti koma (,) atau apostrof (').
AxeEffect
Juga pastikan Anda berada di repo atau terminal / jendela terminal yang benar terutama jika Anda bekerja pada beberapa repo secara bersamaan.
totymedli
71

Ketika menarik dari hulu terpencil, git fetch --alllakukan trik untuk saya:

git remote add upstream [url to the original repo]
git checkout [branch to be updated]
git fetch --all
git merge upstream/[branch to be updated]

Dalam kasus lain, saya menemukan kesalahan "Bukan sesuatu yang bisa kita gabungkan" juga akan terjadi jika cabang jarak jauh (asal, hulu) tidak ada. Ini mungkin tampak jelas, tetapi Anda mungkin menemukan diri Anda melakukan git merge origin/developrepo yang hanya dimiliki master.

Eneko Alonso
sumber
5
Saya benar-benar tidak tahu mengapa jawaban ini belum mengumpulkan suara sebanyak yang di atas. 'git fetch -all' adalah perintah yang biasanya tidak dijalankan seseorang sebelum menggabungkan cabang jarak jauh dan itu memecahkan masalah untuk saya.
Dayanand Gowda
2
Karena mengambil tidak menarik secara otomatis dan Anda harus melakukan ini secara manual. Jadi pasangan mengambil --semua & tarik --semua akan melakukan trik.
danielpopa
Terima kasih! The git remote add upstreamadalah hal penting yang saya hilang yang dipecahkan itu untuk saya. Saya pikir kesalahan umum adalah mengasumsikan garpu secara otomatis tahu dari mana garpu itu berasal.
Brent
23

Saya punya masalah ini juga. Cabang itu terlihat seperti 'nama pengguna / master' yang tampaknya membingungkan git karena terlihat seperti alamat jarak jauh yang saya definisikan. Bagi saya menggunakan ini

git merge origin/username/master

bekerja dengan sangat baik.

spekulatius
sumber
4
Saya harus meletakkan di origin/depan nama cabang terpencil juga.
AsGoodAsItGets
Anda harus melakukan ini jika nama cabang memiliki garis miring /di dalamnya.
CTS_AE
21

Metode di bawah ini berfungsi untuk saya setiap saat.

git checkout master
git pull
git checkout branch-name-to-be-merged
git pull
git checkout branch-name
git pull
git merge branch-name-to-be-merged
RNV
sumber
Ini bekerja untuk saya, terima kasih. Saya ini pada dasarnya adalah solusi yang tepat: pada dasarnya pastikan Anda memiliki cabang sumber diperiksa sebelum mencoba untuk menggabungkannya.
dps
11

Itu mungkin terjadi karena cabang itu tidak ada di lokal Anda. sebelum penggabungan digunakan

git fetch origin
Alok Kamboj
sumber
7

Anda mendapatkan kesalahan ini karena cabang yang ingin Anda gabungkan tidak ada di repositori lokal Anda.

Jadi, pertama periksa brach yang ingin Anda gabungkan ke cabang master dengan perintah berikut:

git checkout branch_name_to_merge

Setelah ini coba gabungkan dengan cabang utama dengan perintah berikut:

git merge branch_name_to_merge
Bilal Ahmed Yaseen
sumber
2
Ini juga dapat terjadi jika Anda tidak memperhatikan nama cabang Anda (mis. Salah eja) :)
Matt Borja
Ini berhasil untuk saya. Ketika saya bekerja di Atom dengan tab Git dan saya beralih cabang dengan drop down, kadang-kadang saya harus pergi ke baris perintah dan checkoutcabang
nzaleski
7

Kesalahan ini menunjukkan bahwa cabang dari tempat Anda ingin menggabungkan perubahan (yaitu dalam kasus Anda nama cabang) tidak ada di Anda secara lokal, jadi Anda harus checkout cabang dan mengambil perubahan lokal. Periksa ke cabang utama Anda dan ambil, lalu ikuti langkah-langkah di bawah ini:

git checkout branch-name
git pull
git checkout new-branch-name
git merge branch-name
Amar Magar
sumber
Saya akan pilih-pilih dan mengatakan saya tidak berpikir pesan kesalahan menyarankan sesuatu seperti di atas :-)
Brian Agnew
6

Jawaban ini tidak terkait dengan pertanyaan di atas, tetapi saya menghadapi masalah serupa, dan mungkin ini akan berguna bagi seseorang. Saya menggabungkan cabang fitur saya ke master seperti di bawah ini:

$ git merge fix-load

Saya mendapat pesan kesalahan berikut:

merge: fix-load - bukan sesuatu yang bisa kita gabungkan

Saya melihat ke atas semua solusi, tetapi tidak ada yang berhasil.

Saya menemukan masalah ini adalah kesalahan ejaan pada nama cabang saya (sebenarnya, nama cabang gabungan adalah fix-loads).

yala ramesh
sumber
4
Bagi saya, menambahkan asal berfungsi. Mengambil contoh Anda, git merge origin/fix-loadsberhasil.
Ram Patra
3

Saya mendapatkan kesalahan ini ketika saya melakukan git merge BRANCH_NAME "some commit message"- Saya lupa menambahkan flag -m untuk pesan commit, jadi ia berpikir bahwa nama cabang menyertakan komentar.

murni logis
sumber
3

Menurut pendapat saya saya telah melewatkan peta cabang lokal saya dengan repo jarak jauh. saya lakukan di bawah ini dan itu bekerja dengan baik.

git checkout master
git remote add origin https://github.com/yourrepo/project.git
git push -u origin master
git pull
git merge myBranch1FromMain
Vinay Sharma
sumber
2

Jika string yang berisi referensi dihasilkan oleh perintah Git lain (atau perintah shell lain untuk masalah ini), pastikan bahwa itu tidak mengandung kereta balik di akhir. Anda harus menghapusnya sebelum meneruskan string ke "git merge".

Perhatikan bahwa ini cukup jelas ketika ini terjadi, karena pesan kesalahan ada pada 2 baris:

merge: 26d8e04b29925ea5b59cb50501ab5a14dd35f0f9
 - not something we can merge
ocroquette
sumber
3
Harap berikan komentar saat Anda menurunkan jawaban. Mungkin itu bukan masalah yang dimiliki oleh poster asli, tapi itu kemungkinan penyebab pesan kesalahan (saya punya masalah sendiri).
ocroquette
2

Kami mendapat kesalahan ini karena kami memiliki koma (,) di nama cabang. Kami menghapus cabang lokal, lalu memeriksanya kembali dengan nama baru tanpa koma. Kami berhasil menggabungkannya dengan sukses.

Doug
sumber
Garis bawah juga tampaknya bermasalah. +1
Anders Lindén
1
Saya sering menggunakan garis bawah dalam nama cabang @ AndersLindén
nzaleski
dan tanda kurung juga bermasalah ... + 1
Pablo Ezequiel
1

Untuk anak cucu: Seperti kata AxeEffect ... jika Anda tidak memiliki kesalahan ketik, periksa untuk melihat apakah Anda memiliki karakter konyol dalam nama cabang lokal Anda, seperti koma atau apostrof. Persis yang terjadi pada saya barusan.

Penatua Smash
sumber
Atau garis bawah. +1
Anders Lindén
1

Saya sarankan memeriksa apakah Anda dapat beralih ke cabang yang ingin Anda gabungkan.

Saya mendapatkan kesalahan ini meskipun cabang yang ingin saya gabungkan ada di repositori lokal dan tidak ada kesalahan ejaan.

Saya mengabaikan perubahan lokal saya sehingga saya bisa beralih ke cabang (Stash atau komit juga bisa lebih disukai). Setelah ini saya beralih kembali ke cabang awal, dan penggabungan berhasil.

eaykin
sumber
0

Bagi saya masalah terjadi ketika saya mencoba ini:

git merge -s ours --no-commit --allow-unrelated-histories <remote name>/develop

Jadi sebenarnya saya seharusnya menulis masteralih-alih develop, karena master adalah nama cabang dari Subtree, bukan cabang saya yang sebenarnya.

Levon Petrosyan
sumber
0

Ini mungkin terdengar aneh, tapi ingat untuk mengatur email dan nama git Anda:

git config --global user.email "[email protected]"
git config --global user.name "FIRST_NAME LAST_NAME"
superarts.org
sumber
0

Bagi saya, masalahnya adalah 'tanda kutip ganda' menjadi pesan gabungan. Jadi ketika saya menghapus tanda ganda, semuanya bekerja secara ajaib. Saya berharap dapat membantu seseorang. (Maaf untuk bahasa Inggris saya yang buruk)

Aryelson Santos
sumber
0

Saya memiliki pohon kerja dengan master dan cabang lain memeriksa dalam dua folder kerja yang berbeda.

PS C:\rhipheusADO\Build> git worktree list
C:/rhipheusADO/Build         7d32e6e [vyas-cr-core]
C:/rhipheusADO/Build-master  91d418c [master]

PS C:\rhipheusADO\Build> cd ..\Build-master\

PS C:\rhipheusADO\Build-master> git merge 7d32e6e #Or any other intermediary commits
Updating 91d418c..7d32e6e
Fast-forward
 Pipeline/CR-MultiPool/azure-pipelines-auc.yml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

PS C:\rhipheusADO\Build-master> git ls-remote
From https://myorg.visualstudio.com/HelloWorldApp/_git/Build
53060bac18f9d4e7c619e5170c436e6049b63f25        HEAD
7d32e6ec76d5a5271caebc2555d5a3a84b703954        refs/heads/vyas-cr-core 

PS C:\rhipheusADO\Build-master> git merge 7d32e6ec76d5a5271caebc2555d5a3a84b703954
Already up-to-date

PS C:\rhipheusADO\Build>  git push
Total 0 (delta 0), reused 0 (delta 0)
To https://myorg.visualstudio.com/HelloWorldApp/_git/Build
   91d418c..7d32e6e  master -> master

Jika Anda hanya perlu menggabungkan komit terbaru:

git merge origin/vyas-cr-core 
git push

Dan sama dengan apa yang selalu saya lakukan:

git checkout master # This is needed if you're not using worktrees
git pull origin vyas-cr-core
git push
Vyas Bharghava
sumber
0

Cabang yang Anda coba gabungkan mungkin tidak dapat diidentifikasi oleh Anda git saat ini, jadi lakukan git branch dan lihat apakah cabang yang ingin Anda gabungkan ada, jika tidak maka lakukan git pull dan sekarang jika Anda lakukan git branch, cabang akan terlihat sekarang, dan sekarang kamu tampilgit merge <BranchName>

yogeswaran
sumber