Apakah ada cara untuk mengatur repositori host Git sedemikian rupa sehingga ada yang git pull
dilakukan dari klon (lokal) yang digunakan --rebase
secara default? Dengan mencari di Stack Overflow, saya belajar tentang branch.autosetuprebase
, tetapi perlu dikonfigurasi per klon secara individual.
Aliran proyek saya sudah diatur sedemikian rupa sehingga kita pull
yang develop
cabang sebelum merge
ing cabang fitur untuk itu. Ini pull
hampir selalu menggunakan --rebase
, jadi saya mencoba mencari tahu apakah ini bisa menjadi default.
Jawaban:
Sekarang ada 3 level konfigurasi untuk perilaku tarikan default. Dari yang paling umum hingga yang berbutir halus, mereka adalah:
1.
pull.rebase
Mengatur ini
true
berartigit pull
selalu setara dengangit pull --rebase
(kecuali jikabranch.<branchname>.rebase
diatur secara eksplisit kefalse
). Ini juga dapat diatur per repositori atau secara global.2.
branch.autosetuprebase
Mengatur ini
always
berarti bahwa setiap kali cabang pelacakan dibuat, entri konfigurasi seperti yang di bawah ini akan dibuat untuknya. Untuk kontrol berbutir halus, ini juga dapat diatur kenever
,local
atauremote
dan dapat diatur per repositori atau secara global. Lihatgit config --help
untuk keterangan lebih lanjut.3.
branch.<branchname>.rebase
Pengaturan ini
true
berarti bahwa cabang tertentu akan selalu menarik dari hulu melalui rebasing, kecualigit pull --no-rebase
digunakan secara eksplisit.Kesimpulan
Jadi, sementara Anda tidak dapat mengubah perilaku default untuk semua klon repositori di masa depan, Anda dapat mengubah default untuk semua repositori pengguna saat ini (yang ada dan yang akan datang) melalui
git config --global pull.rebase true
.sumber
~/.gitconfig
, yang berarti setiap pengembang yang mengkloning repositori host perlu menjalankan perintah. Tidak mengeluh tentang solusi Anda. Itu bagus, saya hanya ingin memastikan saya mengerti maksud Anda dengan benar.Bagaimana tentang
Ini akan memberitahu git untuk selalu menarik dengan rebase.
sumber
--bool
, itu tidak perluJawabannya adalah tidak.
Tidak ada cara untuk mengatur repositori jarak jauh sehingga setiap orang yang mengkloningnya memiliki perilaku default yang
git pull
diubah.Anda bisa, bagaimanapun, mengatur kait sisi server yang memeriksa bahwa tidak ada yang mendorong gabungan melakukan ( sesuatu seperti ini , mungkin).
Ada juga beberapa opsi konfigurasi yang mungkin menarik bagi Anda. Semua pengembang yang mengkloning dari repositori jarak jauh harus mengaturnya sendiri secara manual.
1. Opsi
branch.<name>.rebase
Anda dapat mengonfigurasi cabang lokal untuk selalu menggunakan
--rebase
, seperti ini, mengganti<name>
dengan nama cabang:Setelah menjalankan ini
master
,master
bagian dalam.git/config
tampak seperti ini:2. Opsi
branch.autosetuprebase
Menjalankan perintah konfigurasi sebelumnya untuk setiap cabang Git bisa merepotkan, jadi Anda bisa mengonfigurasi Git untuk mengaturnya secara otomatis untuk setiap cabang baru:
(Anda juga dapat menentukan
never
,remote
danlocal
, melihatman git-config
untuk rincian.)Tanpa
--global
opsi, konfigurasi disimpan.git/config
, dan hanya repositori saat ini yang terpengaruh. Dengan--global
, konfigurasi disimpan ke~/.gitconfig
, dan setiap repositori yang tidak dikonfigurasi terpengaruh.Opsi ini tidak memengaruhi cabang yang sudah ada.
3. Opsi
pull.rebase
(Anda juga bisa memberikannya
--global
opsi.)Jika opsi ini benar, menjalankan
git pull
setara dengangit pull --rebase
, kecuali jikabranch.<name>.rebase
telah diatur kefalse
.sumber
Ini menjadikan
--rebase
opsi sebagai default saat mengeluarkangit pull
pada cabang tertentu.@ Flimm, saya perlu menambahkan
true
untuk membuat opsi pertama Anda berfungsi.Jadi sintaks yang benar adalah:
Untuk menjalankan perintah ini di
develop
cabang:Dan sekarang
develop
bagian dalam.git/config
terlihat seperti ini:sumber
Saat ini tidak ada cara untuk mengatur kebijakan default untuk repositori.
Jika Anda menginginkannya sendiri dan Anda menggunakan setidaknya git 1.7.9, Anda dapat secara global mengatur
pull.rebase
konfigurasi sebagai berikut:Tetapi Anda harus melakukannya di setiap mesin. Salah satu opsi bisa dengan mengkonfigurasi templat / kerangka rumah pengguna default dengan opsi itu. Namun, pengguna dapat mengubah opsi itu.
Jika Anda tidak ingin gabungan, Anda bisa menentukan kait sisi server untuk menolak dorongan dengan gabungan.
Untuk referensi Anda, ini adalah dokumentasi sumber untuk pull.rebase:
sumber