Saya telah menggunakan git untuk sementara waktu sekarang, tetapi saya tidak pernah harus membuat repo jarak jauh baru sendiri dan saya ingin tahu melakukannya. Saya telah membaca tutorial dan saya bingung bagaimana cara "git push" bekerja.
Jika saya hanya menggunakannya git push
meminta saya untuk melihat cabang default (?) Untuk menunjuk ke? Apa perbedaan antara dua opsi yang disediakannya untuk saya?
git config --global push.default matching
git config --global push.default simple
Matching hanya mendorong cabang apa pun yang saya miliki di repo lokal saya, dan jika mereka tidak cocok saya harus kemudian secara manual mengatakannya untuk mendorong cabang lokal baru apa pun yang saya miliki, benar? Apakah ini praktik terbaik untuk digunakan atau sederhana terbaik?
git
git-push
git-pull
git-remote
Josh
sumber
sumber
pull.default
tersedia untuk memperbarui semua cabang tersebut secara lokalJawaban:
git push
dapat mendorong semua cabang atau satu bergantung pada konfigurasi ini:Dorong semua cabang
Ini akan mendorong semua cabang ke cabang jarak jauh dan akan menggabungkannya. Jika Anda tidak ingin mendorong semua cabang, Anda hanya bisa mendorong cabang saat ini.
Dorong hanya cabang saat ini
Jadi, menurut saya, lebih baik menggunakan opsi ini dan mendorong cabang kode Anda dengan cabang. Lebih baik mendorong cabang secara manual dan individual.
sumber
push.default current
jawaban dari @UpAndAdam. Tidak tahu tentang itu.simple
tidak ada lagi opsi. Di1.7.8.4
(dan sebelumnya?) Itu menghasilkan kesalahan ketika Anda mencoba untuk mendorong. tetapicurrent
masih tersediatracking
-> mendorong cabang saat ini ke cabang hulu.simple
tidak masuk akal, bertentangan dengan jawaban ini, dan salah - yang membuat jawaban ini membingungkan. Halaman yang ditautkan mengatakansimple
"akan mendorong cabang satu per satu. Sebagian besar terhubung dengan cabang saat ini." Apakah itu berarti akan mendorong cabang secara berurutan dibandingkan secara paralel? Apa yang dimaksud "sebagian besar terhubung"? Kemudian, deskripsi untuksimple
selanjutnya mengutip deskripsi untukmatching
, yang menurut orang berarti deskripsi untukmatching
juga berlaku untuksimple
. Tapi jelas itu tidak benar.Dari dokumentasi GIT: Git Docs
Di bawah ini memberikan informasi lengkap. Singkatnya,
simple
hanya akan mendorongcurrent working branch
dan itupun hanya jika itu juga memiliki nama yang sama pada remote. Ini adalah pengaturan yang sangat bagus untuk pemula dan akan menjadi default diGIT 2.0
Sedangkan
matching
akan mendorong semua cabang secara lokal yang memiliki nama yang sama di remote. (Tanpa memperhatikan cabang kerja Anda saat ini). Ini berarti kemungkinan banyak cabang yang berbeda akan didorong, termasuk yang mungkin Anda tidak ingin bagikan.Dalam penggunaan pribadi saya, saya biasanya menggunakan opsi yang berbeda:
current
yang mendorong cabang kerja saat ini, (karena saya selalu bercabang untuk setiap perubahan). Tapi untuk pemula saya sarankansimple
sumber
git push origin master
akan melakukan hal yang sama. Inti dari mode dan default umumnya adalah apa yang terjadi ketika Anda hanya mengatakangit push
dan Anda tidak mengatakannya remote atau cabang. Pengaturan default apa? maksud Anda pengaturan default push.default? pengaturan default di mana versi git ... jika Anda tidak mendapatkannya, komentar Anda sangat kabur.Catatan Rilis Git v2.0
Catatan kompatibilitas mundur
Ketika
git push [$there]
tidak mengatakan apa yang harus ditekan, kami telah menggunakan semantik "pencocokan" tradisional sejauh ini (semua cabang Anda dikirim ke remote selama sudah ada cabang dengan nama yang sama di sana). Di Git 2.0, standarnya sekarang adalah semantik "sederhana", yang mendorong:hanya cabang saat ini ke cabang dengan nama yang sama, dan hanya ketika cabang saat ini diatur untuk berintegrasi dengan cabang jarak jauh itu, jika Anda mendorong ke jarak jauh yang sama dengan yang Anda ambil; atau
hanya cabang saat ini ke cabang dengan nama yang sama, jika Anda mendorong ke remote yang bukan tempat Anda biasanya mengambil.
Anda dapat menggunakan variabel konfigurasi "push.default" untuk mengubahnya. Jika Anda adalah old-timer yang ingin tetap menggunakan semantik "cocok", Anda dapat mengatur variabel ke "cocok", misalnya. Baca dokumentasi untuk kemungkinan lain.
Ketika
git add -u
dangit add -A
dijalankan di dalam subdirektori tanpa menentukan jalur mana yang akan ditambahkan pada baris perintah, mereka beroperasi di seluruh pohon untuk konsistensi dengangit commit -a
dan perintah lainnya (perintah ini digunakan untuk beroperasi hanya pada subdirektori saat ini). Katakangit add -u .
ataugit add -A .
jika Anda ingin membatasi operasi ke direktori saat ini.git add <path>
sama sepertigit add -A <path>
sekarang, sehinggagit add dir/
akan melihat jalur yang Anda hapus dari direktori dan merekam penghapusan. Dalam versi Git yang lebih lama,git add <path>
digunakan untuk mengabaikan kepindahan. Anda dapat mengatakangit add --ignore-removal <path>
menambahkan hanya jalur yang ditambahkan atau diubah<path>
, jika Anda benar-benar menginginkannya.sumber