Ada beberapa cara untuk mengatur hulu, sambil mendorong atau tanpa mendorong pada saat yang sama.
Jika magit-push-current-set-remote-if-missing
bukan- nil
(default), maka Anda akan melihat sesuatu seperti:
Push feature to
p pushRemote, after setting that
u @{upstream}, after setting that
e elsewhere
Untuk mendorong origin/feature
dan mengaturnya sebagai upstream, tekan udan kemudian RETuntuk menerima kandidat penyelesaian default.
Jika magit-push-current-set-remote-if-missing
adalah nil
, maka Anda akan melihat ini sebagai gantinya:
Push feature to
e elsewhere
Jika Anda menekan psekarang, maka Anda akan diberitahu bahwa hulu tidak dikonfigurasikan (menyiratkan bahwa Anda tidak dapat mendorong ke hulu jika tidak ada hulu).
Tapi jika magit-push-current-set-remote-if-missing
ini nil
, maka daftar switch akan fitur --set-upstream
, sehingga Anda bisa menggunakan P - u pseperti yang Anda digunakan untuk (kecuali bahwa p kedua adalah huruf kecil). Namun ada satu komplikasi: setelah mengubah nilai magit-push-current-set-remote-if-missing
Anda harus me-restart Emacs --set-upstream
agar muncul atau menghilang.
Akhirnya anda dapat mengatur hulu menggunakan "set hulu (dan melakukan apa-apa lagi)" perintah: b uorigin/master
RET. Perhatikan bahwa ketika Anda menggunakan pendekatan ini, maka Anda hanya dapat memilih cabang yang sudah ada.
Tetapi akan lebih baik untuk mengkonfigurasi push-remote dan push to itu. Untuk mempelajari lebih lanjut tentang push-remote dan perbedaannya dari hulu, lihat simpul Branching di manual info (versi web belum diperbarui).
Pada dasarnya, cabang hulu adalah cabang tempat cabang fitur Anda pada akhirnya akan digabung (dengan menggabungkan atau rebasing, bukan dengan mendorong), kemungkinan besar origin/master
. Dan push-remote adalah tempat Anda mendorong cabang fitur Anda saat masih bekerja pada mereka atau agar orang lain dapat menggabungkannya. Jika cabang lokal bernama feature
dan push-remote my-fork
, maka mendorong cabang yang menggunakan P pakan mendorong ke my-fork/feature
. ("Push-to-branch" tidak dapat dikonfigurasi, nama cabang pada push-remote selalu sama dengan nama lokal.)
Jadi sementara pertanyaan Anda adalah sesuatu seperti "bagaimana saya mendorong ke hulu, sementara mengkonfigurasi hulu pada saat yang sama", rekomendasi saya adalah untuk tidak mendorong ke hulu sama sekali, tetapi sebagai gantinya mendorong ke push-remote.
Asalkan Anda belum mengubah nilai magit-push-current-set-remote-if-missing
Anda dapat mengkonfigurasi push-remote menggunakan P psome-remote
RET. Tapi, karena Anda mungkin mendorong semua cabang fitur ke remote yang sama, lebih baik untuk mengatur push-remote sekali untuk semua cabang dan selesai dengan itu: bdan kemudian M-psampai remote yang tepat dipilih.
Juga perhatikan bahwa biasanya tidak perlu menetapkan cabang upstream secara eksplisit. Saat Anda membuat cabang baru dan memilih cabang jarak jauh sebagai titik awal, maka itu digunakan sebagai upstream.
Sayangnya titik awalnya biasanya adalah cabang lokal dan dalam kasus itu Git secara default tidak menggunakannya sebagai upstream. Tapi itu bisa dengan mudah diperbaiki dengan menjalankan ini sekali:
git config --global branch.autoSetupMerge always
Nilai default adalah true
, yang berarti "mengatur titik awal sebagai hulu, asalkan itu adalah cabang jarak jauh ".
Omong-omong, hal yang sama berlaku untuk push-remote. Itu juga biasanya harus diatur semi-otomatis dalam repositori "baru". Jika Anda mengkloning repositori, Anda akan ditanya apakah Anda ingin menggunakannya origin
sebagai push-remote. Anda harus menjawab "ya", kecuali Anda akan menambahkan remote lain, katakanlah my-fork
, yang harus digunakan sebagai push-remote. Ketika Anda menambahkan remote menggunakan baru M adan remote.pushDefault
belum diatur, maka Anda akan ditanya apakah Anda ingin menggunakan remote yang baru ditambahkan sebagai push-remote.
Ini dapat dikonfigurasi menggunakan magit-clone-set-remote.pushDefault
dan magit-remote-add-set-remote.pushDefault
.
Opsi lanjutan lainnya adalah magit-branch-prefer-remote-upstream
, yang defaultnya adalah nil
. Jika Anda mengaturnya ke t
, dan kemudian pilih cabang lokal sebagai titik awal untuk cabang baru, maka hulu dari titik awal mungkin (menurut beberapa aturan, lihat doc-string) digunakan sebagai hulu, bukan titik awal itu sendiri.
<remote>/<branch>
bagian itu sengaja ditinggalkan keluar dari prompt (lihat komentar ini ). Sementara itu, Anda dapat mengaturmagit-push-current-set-remote-if-missing
ke nol.