Saya ingin mengubah tujuan cabang jarak jauh default Git sehingga saya bisa saja
git push
Dari pada:
git push upstream
Saat ini diatur ke remote asal dan saya ingin mengaturnya ke remote lain.
Saya mencoba untuk menghapus remote asli (kloning dari)
git remote rm origin
Yang tidak menghapus remote asli. Tetapi tidak memecahkan git push
masalah. Saya masih mendapatkan:
fatal: Tidak ada tujuan push yang dikonfigurasi. Tentukan URL dari baris
perintah atau konfigurasikan repositori jarak jauh menggunakan ...
Saya juga mencoba bermain dengan:
git remote set-url --push myfork origin
dan opsi lain tetapi sepertinya tidak ada yang berhasil (mungkin karena saya terlalu cepat menghapus asal-usulnya?)
Mengikuti jawaban di sini saya mencoba untuk mengubah:
git config push.default upstream (or matching)
tapi tidak ada yang berhasil.
sumber
git push -u <remote_name> <local_branch_name>:<corresponding_remote_branch_name>
.git push -u origin master:master
.git push
untuk mendorong cabang remote dari cabang lokal saat ini? Maksud saya melakukannya ini berarti saya harus menjalankan perintah ini untuk setiap cabang. Baik? Tidak bisakah saya hanya melakukan pengaturan awal untuk seluruh repo? @MarcoLazzerigit push -u origin master
cukup? Apakah Anda hanya mengilustrasikan sintaksis lengkap?Untuk mengubah remote upstream mana yang "kabel" ke cabang Anda, gunakan
git branch
perintah dengan flag konfigurasi upstream.Pastikan remote ada terlebih dahulu:
git remote -vv
Setel jarak jauh yang disukai untuk cabang saat ini (dicentang):
git branch --set-upstream-to <remote-name>
Memvalidasi cabang diatur dengan remote upstream yang benar:
git branch -vv
sumber
git branch --set-upstream-to myfork
dan mendapat kesalahan:> error: opsi tidak diketahui `set-upstream-to 'Saya menjalankan git 1.7.9git remote set-url origin PATH_TO_REMOTE
)git branch -u <remotename>/<branch>
bekerja untukku. Perintah dijalankan dengan cabang lokal yang menarik diperiksa. Lihat 'Melacak Cabang' di git-scm.com/book/it/v2/Git-Branching-Remote-Branchesgit remote -v
ataugit remote --verbose
. The-vv
's ekstra v adalah berlebihan.Bekerja dengan Git 2.3.2 ...
Sekarang
status
,push
danpull
diarahkan kemyfork
remotesumber
pull
juga.Anda dapat dengan mudah mengubah remote default untuk cabang sekaligus sekaligus menggunakan perintah ini
sumber
Jika Anda melakukannya
git push origin -u localBranchName:remoteBranchName
dan padagit push
perintah berurutan , Anda mendapatkan kesalahan yang kemudian asal tidak ada, kemudian ikuti langkah-langkah ini:git remote -v
Periksa apakah ada remote yang tidak saya pedulikan. Hapus dengan
git remote remove 'name'
git config --edit
Cari tanda-tanda kemungkinan remote lama / tidak ada. Mencari
pushdefault
:Perbarui
oldremote
nilai dan simpan.git push
harus bekerja sekarang.sumber
-u
ketika menggunakangit push
ke remote yang berbeda karena memori otot. Ini menjadikan remote yang diberikan sebagai default, mengaturnya menggunakan kembaligit config --edit
(atau mendorong lagi dan mengatur remote baru) menyelesaikan masalah.Hanya klarifikasi (menggunakan git versi 1.7.9.5 di ubuntu 12.04):
Git akan menambah / menghapus remote. Ini adalah contoh git dari jarak jauh dengan server terpasang.
Anda kemudian dapat mengambil repositori git seperti:
Tampaknya ini membuat cabang bernama 'myremote', namun remote untuk cabang tidak diatur secara otomatis. Untuk melakukan ini, Anda harus melakukan hal berikut:
Pertama, verifikasi bahwa Anda memiliki masalah ini, yaitu
Anda harus melihat sesuatu seperti:
Jika Anda melihat
branch.myremote.remote=.
, maka Anda harus melanjutkan:Anda sekarang harus mengetahui repositori jarak jauh, dan tarikan / dorongan Anda harus diikat ke remote yang sesuai. Anda dapat mengganti remote dengan cara ini, per cabang . [Catatan 1]
Menurut Dokumentasi Resmi Git , Anda dapat mengatur a cabang push default (cukup cari remote.pushdefault pada halaman itu), namun perlu diingat bahwa ini tidak akan memengaruhi repositori / cabang yang sudah ada, jadi ini akan berfungsi tetapi hanya untuk repositori / cabang baru. Anda harus ingat bahwa
--global
akan menetapkan standar repositori khusus pengguna (~ / .gitconfig),--system
akan menetapkan standar repositori seluruh sistem (/ etc / gitconfig), dan tidak ada flag yang akan mengatur opsi konfigurasi untuk repositori saat ini (./.gitconfig).Juga harus dicatat bahwa opsi konfigurasi push.default adalah untuk mengkonfigurasi perilaku ref-spec , bukan perilaku jarak jauh .
[1]:
git branch --set-upstream myotherremote
biasanya akan bekerja di sini, namun git akan mengeluh bahwa ia tidak akan menetapkan cabang sebagai remote-nya sendiri jikagit branch --set-upstream myremote
digunakan. Namun saya percaya ini adalah perilaku yang salah.sumber
git config -l | grep myremote
, Anda cukup menggunakan:git config --get branch.myremote.remote
--get
mengasumsikan perilaku tertentu, saya membuat catatan bahwa ada cara lain untuk mengatur upstreams tetapi ini menyediakan cara untuk menemukan informasi tanpa hanya mengandalkan git tooling untuk menjadi benar. Git tidak sempurna, lebih baik untuk memahami data, apa yang dilakukannya dan kemudian berharap doa-doanya bekerja dengan tepat.Mungkin bermanfaat untuk melihat di
.git/config
dalam repo Anda, ini akan mencantumkan semua remote dan juga remote default untuk setiap cabangmisalnya.
Anda dapat membuat perubahan manual dalam file ini untuk menghapus remote yang tidak diinginkan, atau memperbarui remote default untuk berbagai cabang yang Anda miliki
sumber
Teknik lain yang baru saja saya temukan untuk menyelesaikan ini (bahkan jika saya menghapus asal terlebih dahulu, apa yang tampaknya menjadi kesalahan) adalah memanipulasi git config secara langsung:
sumber
git remote set-url origin PATH_TO_REMOTE
)Sangat sederhana, dan mengumpulkan beberapa komentar hebat di sini bersama dengan penelitian saya sendiri tentang ini.
Pertama, periksa cabang lokal yang ingin Anda ikat ke cabang jarak jauh Anda:
Lanjut:
dimana:
Anda harus mendapatkan pesan:
sumber
Dalam kasus saya, saya memperbaiki dengan yang berikut: * run
git config --edit
* Dalam file konfigurasi git:sumber
git remote set-url --push origin
harus berfungsi, seperti yang Anda sebutkan, tetapi Anda harus secara eksplisit memberikan url alih-alih nama jarak jauh alternatif, misalnyaAnda dapat mengkonfirmasi apakah ini berhasil dengan melakukan a
git remote -v
. Misalnyasumber