Saat menelepon magit-push-current
dengan P P
dari buffer status, Magit 2.1.0
tanyakan 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-current
dengan P P
dari buffer status, Magit 2.1.0
tanyakan 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-upstream
beralih 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 push
tanpa ada argumen. Apa yang dilakukan kemudian akan bergantung secara eksklusif pada konfigurasi Git.
master
dan itu tidak mengatur hulu, haruskah saya bercabang dari origin/master
untuk memiliki hulu otomatis diatur?
origin/master
ditetapkan origin/master
sebagai hulu, tetapi saya diharapkan memiliki origin/branch-name
hulu.
P -p P <... completion ...> RET
Catatan yang origin/branch-name
ditawarkan sebagai kandidat penyelesaian, jadi Anda tidak perlu mengetiknya.
Saya menggunakan saran berikut yang secara otomatis memungkinkan --set-upstream
ketika 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 c
dan kemudian mengedit .git/config
file untuk menunjuk origin/branch
daripada 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-to
dan seperti yang Anda ketahui, Git tidak dapat menetapkan cabang yang tidak ada sebagai upstream dan Magit juga tidak bisa.
some-branch-name
keorigin
remote, Anda mungkin bisa mengetiko TAB s TAB
dan Anda akan mendapatkan nama yang Anda inginkan.