kami baru-baru ini beralih dari SVN ke Git dan pada saat yang sama menempatkan sistem live kami ke dalam kontrol versi (alih-alih checkout lokal dan menyalin file ke live).
Pada proyek saya ditugaskan untuk kita semua mengakses repositori yang sama dan untuk mendapatkan perubahan kita tinggal di git pull
sana. Ini menyebabkan masalah karena desainer web kami mendorong perubahan ke VCS yang seharusnya belum tayang tetapi harus berada di lingkungan pengujian web.
Ketika salah satu pengembang sekarang aktif, ia mendapatkan semua (mungkin belum selesai) perubahan.
Saya berpikir untuk beralih langsung ke cabang tambahan dan hanya menggabungkan apa yang berubah tetapi karena kurangnya pengetahuan git saya tidak tahu caranya.
Ide saya adalah:
- Buat Cabang baru di live (
git branch live
). - Setiap kali sesuatu harus ditayangkan
- Tarik perubahan pada master (seperti
git checkout master; git pull; git checkout live
:) git merge master
- Tarik perubahan pada master (seperti
Masalahnya adalah beralih ke menguasai atau menarik semuanya langsung ke sistem live akan menyebabkan masalah jadi saya lebih suka menghindari ini.
Apakah ada cara untuk melakukan ini atau ada cara yang lebih baik untuk mengelola sistem Live (kecuali untuk pelatihan webbies untuk tidak mendorong hal-hal yang belum selesai).
git pull --all
akan secara default tidak menarik master menjadi live, itu akan menarik master dan menggabungkannya dengan master, dan (jika ada di server) tarik langsung untuk bergabung ke live. Apakah kamu sudah mencobanya?git checkout -f
untuk mengabaikan masalah - tetapi buat cadangan!Jawaban:
Anda dapat menggunakan
git stash
sebelum memeriksa master dan menarik, dan setelah memeriksa hidup lagi gunakangit stash pop
(atau jika git Anda lebih tua,git stash apply
dangit stash clear
dengan asumsi Anda belum menyembunyikan hal lain)sumber
git pull --all
akan mengambil semua remote, tetapi masih akan mencoba untuk menggabungkan cabang (atau cabang default) ke cabang saat ini juga.git fetch --all
mungkin jawaban yang lebih baik--all
opsi akan memberi Anda gurita penggabungan dari berbagai versi cabang ke arus. ! Jadi saran saya adalah untuk menjauh dari--all
kecuali itu yang Anda cari, karena dalam kebanyakan kasus lain itu tidak akan memberi Anda apa-apa.Saya dapat menarik perubahan dari
origin/master
menjadimaster
saat bekerja di cabang lain dengan menggunakan perintah ini:sumber
fetch
! =pull
Selesaikan masalahnya terlebih dahulu. Mereka tidak boleh mendorong ke cabang yang tidak mereka dorong.
Apa yang tampaknya Anda tanyakan akan seperti sesuatu
Ini akan mencoba menggabungkan master jarak jauh dan cabang langsung Anda.
sumber
Saya sarankan Anda membuat git repo pengujian untuk semua orang berkomitmen. Semua repo, termasuk situs web langsung Anda akan menjadi klon dari repo pengujian. Dengan cara ini, siapa pun dapat mendorong ke pengujian tanpa menyentuh situs web langsung. Ketika seseorang perlu memperbarui situs langsung, maka Anda dapat menarik situs langsung dari repo pengujian git. Alur kerja ini cukup mirip dengan SVN. Untuk fleksibilitas ekstra, saya sarankan menggunakan cabang "hidup" yang Anda uraikan.
Singkatnya, git repo semua orang adalah klon dari repo pengujian. Situs produksi langsung juga merupakan tiruan dari repo pengujian juga. Atau, pengujian bisa menjadi kloning dari produksi langsung sehingga "git push" selalu bergerak menuju produksi.
Opsi lain termasuk menambahkan cabang "langsung" ke pengaturan ini atau termasuk repo "pementasan" antara pengujian dan produksi. Untuk keamanan ekstra, saya sarankan membatasi akses ke repo live git dan memaksa orang untuk menggunakan skrip aman yang melakukan tarikan untuk produksi langsung.
sumber