Saat menelepon magit-push-currentdengan P Pdari buffer status, Magit 2.1.0tanyakan kepada saya di mana harus mendorong cabang saat pertama kali, ketika upstream tidak diatur.
Bagaimana ia bisa secara otomatis menghasilkan nama seperti dulu?
Saat menelepon magit-push-currentdengan P Pdari buffer status, Magit 2.1.0tanyakan kepada saya di mana harus mendorong cabang saat pertama kali, ketika upstream tidak diatur.
Bagaimana ia bisa secara otomatis menghasilkan nama seperti dulu?
Jawaban:
Pembaruan: "cabang push" yang disebutkan di bawah ini telah dilaksanakan sekarang. Lihat dokumentasi tentang percabangan untuk informasi lebih lanjut.
Anda harus mengatur cabang hulu sekali. Setelah Anda melakukan itu P Pdorongan itu dan Anda akan mendapatkan daftar perubahan unpulled dan unpushed di buffer Status (disediakan ada).
Ada berbagai cara untuk mengatur cabang hulu. Anda bisa menggunakan --set-upstreamberalih dari dorongan popup: P -u P. Atau menggunakan perintah yang menetapkan hulu dan tidak ada yang lain: b u.
Juga Magit sekarang secara otomatis mengatur cabang hulu ketika membuat cabang baru, asalkan "titik awal" adalah nama cabang. Ini berfungsi untuk "upstreams" lokal dan jarak jauh. Tetapi perhatikan bahwa jika Anda memilih cabang lokal sebagai titik awal, maka itu tidak akan membantu Anda mendorong. Mendorong dari repositori saat ini ke repositori saat ini jelas tidak masuk akal, dan tidak diizinkan.
Jadi ketika cabang "hulu" sebenarnya merupakan cabang lokal lain, maka P Pberperilaku seolah-olah tidak ada cabang hulu yang dikonfigurasi, dan berperilaku persis seperti P e. Hal yang sama terjadi jika tidak ada hulu yang dikonfigurasi sama sekali.
Ini karena keterbatasan dalam Git: seseorang hanya dapat mengaitkan satu cabang lain dengan beberapa cabang, dan cabang itu kemudian disebut "cabang hulu". Akan lebih baik jika setidaknya ada cabang "hulu" dan "terbitkan". Saya bermaksud mengimplementasikannya di Magit pada akhirnya. Lihat edisi # 1485 .
Jadi, jika Anda ingin dapat mendorong dengan tepat P Pmaka cabang "hulu" harus mis. "Asal / master", bukan "master".
Saya sedang mempertimbangkan untuk menambahkan varian push yang selalu berjalan git pushtanpa ada argumen. Apa yang dilakukan kemudian akan bergantung secara eksklusif pada konfigurasi Git.
masterdan itu tidak mengatur hulu, haruskah saya bercabang dari origin/masteruntuk memiliki hulu otomatis diatur?
origin/masterditetapkan origin/mastersebagai hulu, tetapi saya diharapkan memiliki origin/branch-namehulu.
P -p P <... completion ...> RETCatatan yang origin/branch-nameditawarkan sebagai kandidat penyelesaian, jadi Anda tidak perlu mengetiknya.
Saya menggunakan saran berikut yang secara otomatis memungkinkan --set-upstreamketika cabang saat ini belum memiliki upstream:
(defun magit-push-arguments-maybe-upstream (magit-push-popup-fun &rest args)
"Enable --set-upstream switch if there isn't a current upstream."
(let ((magit-push-arguments
(if (magit-get-remote) magit-push-arguments
(cons "--set-upstream" magit-push-arguments))))
(apply magit-push-popup-fun args)))
(advice-add 'magit-push-popup :around #'magit-push-arguments-maybe-upstream)
Dikombinasikan dengan penyelesaian ido ini memungkinkan mendorong cabang baru dengan P P RET:
;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)
Saya baru saja membuat cabang baru dengan b cdan kemudian mengedit .git/configfile untuk menunjuk origin/branchdaripada melihat-lihat dengan semua hal 2 magit, yang sepertinya tidak berhasil.
Perubahan:
[branch "fix_something"]
remote = .
merge = refs/heads/master
Untuk
[branch "fix_something"]
remote = origin
merge = refs/heads/fix_something
Ini berfungsi, sedangkan saya masih belum menemukan kombinasi kunci di magit2 yang mencapai hal yang sama. Mencoba mengatur jarak jauh tidak berfungsi karena belum ada di tempat asalnya.
bu. Tapi itu menggunakan git branch --set-upstream-todan seperti yang Anda ketahui, Git tidak dapat menetapkan cabang yang tidak ada sebagai upstream dan Magit juga tidak bisa.
some-branch-namekeoriginremote, Anda mungkin bisa mengetiko TAB s TABdan Anda akan mendapatkan nama yang Anda inginkan.