Saya memiliki repo yang dipanggil myrepo
di beanstalk
server jarak jauh .
Saya mengkloningnya ke komputer lokal saya. Membuat dua cabang tambahan: staging
dan dev
. Mendorong cabang-cabang ini ke jarak jauh juga.
Sekarang:
local remote server
--------------------------------------------------------
master ==> Pushes to `master` ==> deployed to `prod`
staging ==> Pushes to `staging` ==> deployed to `staging`
dev ==> Pushes to `dev` ==> deployed to `dev`
Saya memiliki file bernama config.xml
yang berbeda pada setiap cabang.
Saya ingin mengabaikan file ini hanya selama penggabungan. Tetapi saya ingin ini disertakan saat saya melakukan pembayaran atau melakukan dari / ke cabang repo.
Alasan saya menginginkan ini adalah, kami memiliki skrip penerapan yang menarik (checkout) cabang tertentu dan menerapkannya di server masing-masing. Jadi kami membutuhkan config.xml
file dari cabang khusus itu masuk ke server tertentu seperti yang ditunjukkan di atas saat digunakan.
Saya kira .gitignore
tidak akan berhasil. Apa pilihan lainnya? Perhatikan bahwa file yang diabaikan harus menjadi bagian dari checkout dan komit, yang penting. itu harus diabaikan hanya selama penggabungan.
Terima kasih!
Jawaban:
Saya mengatasi masalah ini dengan menggunakan perintah git merge dengan
--no-commit
opsi dan kemudian secara eksplisit menghapus file bertahap dan mengabaikan perubahan pada file. Misalnya: katakan saya ingin mengabaikan perubahan apa pun untukmyfile.txt
saya lanjutkan sebagai berikut:Anda dapat menempatkan pernyataan 2 & 3 dalam loop for, jika Anda memiliki daftar file untuk dilewati.
sumber
git reset HEAD myfile.txt
tepatnya yang dilakukannya? Bagaimana itu membantu tujuan kita di sini?Saya akhirnya menemukan git
attributes
. Mencoba. Bekerja sejauh ini. Belum memeriksa semua skenario. Tapi itu harus menjadi solusinya.Gabungkan Strategi - Atribut Git
sumber
.gitattributes
- adalah file tingkat root dari repositori Anda yang mendefinisikan atribut untuk subdirektori atau subset file.Anda dapat menentukan atribut untuk memberi tahu Git agar menggunakan strategi penggabungan yang berbeda untuk file tertentu. Di sini, kami ingin melestarikan yang ada
config.xml
untuk cabang kami. Kita perlu menyetelmerge=ours
keconfig.xml
dalam.gitattributes
file.merge=ours
beri tahu git untuk menggunakan file (cabang saat ini) kami, jika konflik penggabungan terjadi.Tambahkan
.gitattributes
file di tingkat root repositoriAnda dapat mengatur atribut untuk confix.xml dalam
.gitattributes
fileDan kemudian tentukan strategi penggabungan dummy ours dengan:
Jika Anda menggabungkan cabang
stag
formulirdev
, alih-alih mengalami konflik gabungan dengan file config.xml, config.xml stag branch dipertahankan pada versi apa pun yang Anda miliki.sumber
config.xml
sama sekali tidak berubah dari basis gabungan ke versi ujung cabang, Git hanya mengambil versi yang diubah, tanpa melihatmerge.ours.driver
pengaturan. Jadi Anda benar untuk khawatir.theirs
merupakan strategi penggabungan bawaan. Tapi tampaknya bahwa seseorang dapat menulis<pattern> merge=foo
, kemudiangit config --global merge.foo.driver true
, dan akan bekerja dengan cara yang sama.Anda bisa mulai dengan menggunakan
git merge --no-commit
, dan kemudian mengedit penggabungan sesuka Anda, yaitu denganconfig.xml
menghapus staging atau file lainnya, lalu komit. Saya curiga Anda ingin mengotomatiskannya lebih jauh setelah itu menggunakan kait, tetapi saya pikir itu layak dilakukan secara manual setidaknya sekali.sumber
git attributes
menawarkan solusi langsung? Saya tidak dapat memahami ini. git-scm.com/book/en/…Anda bisa menggunakan
.gitignore
untuk menjagaconfig.xml
keluar dari repositori, dan kemudian menggunakan hook komit posting untuk mengunggahconfig.xml
file yang sesuai ke server.sumber
attributes
. Tahu cara kerjanya? Saya tidak dapat memahami ini. git-scm.com/book/en/…Contoh:
master
,develop
develop
cabang dan ingin mengabaikannya saat menggabungkanKode:
Anda juga dapat mengabaikan file dengan ekstensi yang sama
misalnya semua file dengan
.txt
ekstensi:sumber
Di sini git-update-index - Daftarkan konten file di pohon kerja ke indeks.
Contoh:-
sumber