Saya menggunakan perintah berikut untuk mendorong ke cabang jarak jauh saya:
git push origin sandbox
Jika saya katakan
git push origin
apakah itu mendorong perubahan di cabang saya yang lain juga, atau apakah itu hanya memperbarui cabang saya saat ini? Saya memiliki tiga cabang: master
, production
dan sandbox
.
The git push
dokumentasi tidak terlalu jelas tentang hal ini, jadi saya ingin mengklarifikasi ini untuk selamanya.
Cabang dan remote mana yang benar- git push
benar memperbarui perintah berikut ?
git push
git push origin
origin
di atas adalah remote.
Saya mengerti bahwa git push [remote] [branch]
hanya akan mendorong cabang itu ke remote.
git
branch
git-branch
git-push
PlagueHammer
sumber
sumber
git push
, yang mungkin menarikJawaban:
Anda dapat mengontrol perilaku default dengan menyetel push.default di konfigurasi git Anda. Dari dokumentasi git-config (1) :
Menentukan tindakan yang harus diambil git jika tidak ada refspec yang diberikan pada baris perintah, tidak ada refspec yang dikonfigurasi di remote, dan tidak ada refspec yang tersirat oleh salah satu opsi yang diberikan pada baris perintah. Nilai yang mungkin adalah:
nothing
: jangan mendorong apa punmatching
: dorong semua cabang yang cocokSemua cabang dengan nama yang sama di kedua ujungnya dianggap cocok.
Ini dulunya adalah default, tetapi tidak sejak Git 2.0 (
simple
adalah default baru).upstream
: dorong cabang saat ini ke cabang hulu (tracking
adalah sinonim usang untuk hulu)current
: dorong cabang saat ini ke cabang dengan nama yang samasimple
: (baru dalam Git 1.7.11) seperti hulu, tetapi menolak untuk mendorong jika nama cabang hulu berbeda dari yang lokalIni adalah opsi paling aman dan cocok untuk pemula.
Mode ini telah menjadi default di Git 2.0.
Contoh baris perintah:
Untuk melihat konfigurasi saat ini:
Untuk mengatur konfigurasi baru:
sumber
simple
mode baru . Mode ini dimaksudkan untuk menjadi default di masa depan.simple
bekerja sepertiupstream
, tetapi sukacurrent
mensyaratkan bahwa nama cabang sama di kedua ujungnya.simple
perilaku sekarang menjadi default.Anda dapat mengatur perilaku default untuk git Anda dengan push.default
atau jika Anda memiliki banyak repositori dan menginginkan hal yang sama untuk semua itu
The sekarang di setup ini berarti bahwa secara default Anda akan hanya mendorong cabang saat ketika Anda melakukan dorongan git
Pilihan lain adalah:
UPDATE - CARA BARU UNTUK MELAKUKAN INI
Pada Git 1.7.11 lakukan hal berikut:
Ini adalah pengaturan baru yang diperkenalkan yang bekerja dengan cara yang sama seperti saat ini, dan akan dibuat default untuk git dari v 2.0 menurut rumor
sumber
git push origin
akan mendorong semua perubahan pada cabang lokal yang memiliki cabang jarak jauh yang cocok diorigin
As forgit push
Dari bagian Contoh
git-push
halaman manualsumber
Saya baru saja melakukan kode saya ke cabang dan mendorongnya ke github, seperti ini:
sumber
Berikut ini adalah informasi yang sangat berguna dan bermanfaat tentang Git Push : Git Push: Just the Tip
Penggunaan git push yang paling umum adalah mendorong perubahan lokal Anda ke repositori hulu publik Anda. Dengan asumsi bahwa upstream adalah remote bernama "origin" (nama remote default jika repositori Anda adalah klon) dan cabang yang akan diperbarui ke / dari bernama "master" (nama cabang default), ini dilakukan dengan:
git push origin master
git push origin
akan mendorong perubahan dari semua cabang lokal ke cabang yang cocok dengan remote asal.git push origin master
akan mendorong perubahan dari cabang master lokal ke cabang master jarak jauh.git push origin master:staging
akan mendorong perubahan dari cabang master lokal ke cabang pementasan jarak jauh jika ada.sumber
git push origin branch_name
untuk beberapa alasan mendorong tidak hanyabranch_name
cabang, tetapi juga cabang lokal saya lainnya (git versi 1.9.1).git push origin master:staging
adalah permata tersembunyi yang luar biasa!(Maret 2012)
Hati-hati:
matching
kebijakan " " default itu mungkin akan segera berubah(kadang-kadang setelah git1.7.10 +) :
Lihat " Tolong diskusikan:" git push "apa yang harus dilakukan ketika Anda tidak mengatakan apa yang harus ditekan? "
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
sumber
Saya hanya memasukkan ini di bagian alias .gitconfig saya dan menyukai cara kerjanya:
Akan mendorong cabang saat ini ke asal dengan
git pub
atau repo lain dengangit pub repo-name
. Lezat.sumber
git push -u --repo="origin" $1;
saja. Ini bekerja dengan cukup baik, kecuali jika Anda mendorong ke repositori lain, nama cabang akan menjadi nama yang digunakan oleh repositori lain, bukan yang Anda dorongAnda dapat mendorong cabang saat ini dengan perintah
(ambil dari sini )
sumber
Git push akan mencoba dan mendorong semua cabang lokal ke server jarak jauh, ini mungkin yang tidak Anda inginkan. Saya memiliki beberapa pengaturan kenyamanan untuk menangani ini:
Alias "gpull" dan "gpush" dengan tepat:
Di ~ / .bash_profile saya
Dengan demikian, mengeksekusi "gpush" atau "gpull" hanya akan mendorong cabang "sedang aktif" saya.
sumber
Anda dapat mengubah perilaku default itu di
.gitconfig
, misalnya:Untuk memeriksa pengaturan saat ini, jalankan:
sumber
Daripada menggunakan alias, saya lebih suka membuat skrip git-XXX sehingga saya dapat sumber mengontrolnya lebih mudah (pengembang kami semua memiliki dir sumber tertentu yang dikendalikan pada jalur mereka untuk jenis hal ini).
Skrip ini (dipanggil
git-setpush
) akan menetapkan nilai konfigurasi untukremote.origin.push
nilai ke sesuatu yang hanya akan mendorong cabang saat ini:perhatikan, saat kami menggunakan
Gerrit
, itu menetapkan targetrefs/for/XXX
untuk mendorong ke cabang ulasan. Ini juga mengasumsikan asal adalah nama jarak jauh Anda.Aktifkan setelah memeriksa cabang dengan
Jelas bisa disesuaikan untuk juga melakukan checkout, tapi saya suka skrip untuk melakukan satu hal dan melakukannya dengan baik
sumber
feature/fix_fubar
semuanya menunjuk ke cabang hulu yang lebih umum sepertimaster
ataudevelop
, jadi ini akan menunjuk ke hulu yang salah. Seperti apa aliran lokal Anda untuk repo yang dikontrol gerrit?git config remote.origin.push HEAD:refs/for/master
.Saya telah menambahkan fungsi-fungsi berikut ke dalam file .bashrc saya untuk mengotomatiskan tugas-tugas ini. Itu git push / git pull + nama cabang saat ini.
sumber