Apa praktik terbaik untuk menggunakan kontrol sumber Git dengan Unity 3D, khususnya dalam berurusan dengan sifat biner proyek Unity 3D? Tolong jelaskan alur kerja, jalur apa yang akan disertakan dalam .gitignore, pengaturan apa yang harus ditetapkan dalam Unity dan / atau proyek, dan hal-hal khusus lainnya yang harus dicatat.
Catatan: Saya menyadari bahwa menggunakan Asset Server adalah cara yang disarankan oleh Unity, tetapi saya ingin menggunakan Git karena berbagai alasan. Tolong tidak ada jawaban yang menyatakan atau berpendapat bahwa saya harus menggunakan Server Aset. Asset Server sebenarnya bukan pilihan bagi saya.
git
unity3d
version-control
Menekan Selalu
sumber
sumber
Jawaban:
Berikut ini adalah kutipan dari blog pribadi saya .
Menggunakan Git dengan Game 3D
Pembaruan Oktober 2015: GitHub telah merilis plugin untuk Git bernama Git LFS yang secara langsung menangani masalah di bawah ini. Anda sekarang dapat dengan mudah dan efisien meng versi file biner besar!
Git dapat bekerja dengan baik dengan game 3D di luar kotak. Namun peringatan utama di sini adalah bahwa versi file media besar (> 5 MB) bisa menjadi masalah dalam jangka panjang karena sejarah komit Anda membengkak. Kami telah memecahkan masalah potensial ini dalam proyek kami dengan hanya mengversi aset biner saat dianggap final. Artis 3D kami menggunakan Dropbox untuk mengerjakan aset WIP, baik karena alasan di atas maupun karena jauh lebih cepat dan sederhana (tidak banyak artis yang secara aktif ingin menggunakan Git!).
Alur Kerja Git
Alur kerja Git Anda adalah sesuatu yang perlu Anda putuskan sendiri karena pengalaman Anda sendiri sebagai sebuah tim dan bagaimana Anda bekerja bersama. Namun. Saya akan sangat menyarankan metodologi yang tepat bernama Git Flow seperti yang dijelaskan oleh penulis asli di sini .
Saya tidak akan membahas terlalu mendalam tentang bagaimana metodologi ini bekerja sebagaimana penulis menggambarkannya dengan sempurna dan dalam beberapa kata juga sehingga mudah untuk dilalui. Saya telah menggunakan dengan tim saya untuk sementara waktu sekarang, dan ini adalah alur kerja terbaik yang kami coba sejauh ini.
Aplikasi Klien Git GUI
Ini benar-benar pilihan pribadi di sini karena ada beberapa opsi dalam hal Git GUI atau apakah akan menggunakan GUI sama sekali. Tapi saya ingin menyarankan aplikasi SourceTree gratis karena terhubung dengan ekstensi Git Flow. Baca tutorial SourceTree di sini tentang penerapan metodologi Git Flow dalam aplikasi mereka.
Unity3D Abaikan Folder
Untuk checkout versi terbaru, Github memelihara file Unity.gitignore tanpa spesifikasi OS.
Pengaturan Unity3D
Untuk versi Unity 3D v4.3 dan lebih tinggi:
External
opsi dalamUnity → Preferences → Packages → Repository
.Edit
menu dan pilihProject Settings → Editor
:Version Control Mode
keVisible Meta Files
.Asset Serialization Mode
keForce Text
.File
menu.Ingin Anda memigrasi repo yang ada ke LFS?
Lihat posting blog saya untuk langkah-langkah bagaimana melakukannya di sini .
Konfigurasi Tambahan
Salah satu dari beberapa gangguan utama yang dialami seseorang ketika menggunakan proyek Git dengan Unity3D adalah bahwa Git tidak peduli dengan direktori dan akan dengan senang hati meninggalkan direktori kosong setelah menghapus file dari mereka. Unity3D akan membuat file * .meta untuk direktori ini dan dapat menyebabkan sedikit pertempuran di antara anggota tim ketika Git terus menambahkan dan menghapus file meta ini.
Tambahkan kait pasca-gabungan Git ini ke
/.git/hooks/
folder untuk repositori dengan proyek Unity3D di dalamnya. Setelah Git menarik / menggabungkan, ia akan melihat file apa yang telah dihapus, periksa apakah direktori yang ada di dalamnya kosong, dan jika demikian hapuslah.sumber
Hidden Meta Files
?Di Unity 4.3 Anda juga harus mengaktifkan opsi Eksternal dari preferensi, tetapi karena Unity 4.5 mereka menjatuhkan pilihan untuk itu, sehingga proses pengaturan penuh terlihat seperti:
Visible Meta Files
dalamEditor → Project Settings → Editor → Version Control Mode
Force Text
dalamEditor → Project Settings → Editor → Asset Serialization Mode
File
menuTim kami juga menggunakan
.gitignore
file yang lebih panjang :Perhatikan bahwa satu-satunya folder yang perlu Anda jaga di bawah kendali sumber adalah
Assets
danProjectSettings
.Informasi lebih lanjut tentang menjaga Proyek Persatuan di bawah kendali sumber dapat Anda temukan di posting ini .
sumber
Hidden Meta Files
?Apa itu GIT?
Git adalah sistem kontrol versi terdistribusi gratis dan open source (SCM) yang dikembangkan oleh Linus Torvalds pada 2005 (pendiri OS Linux). Ini dibuat untuk mengontrol segala sesuatu dari proyek kecil hingga besar dengan kecepatan dan efisiensi. Perusahaan terkemuka seperti Google, Facebook, Microsoft menggunakan GIT setiap hari.
Jika Anda ingin mempelajari lebih lanjut tentang GIT, periksa tutorial Cepat ini ,
Pertama-tama pastikan Anda telah menyiapkan lingkungan Git Anda. Anda perlu mengatur lingkungan lokal Anda dan repositori Git (Saya lebih suka Github.com).
Aplikasi klien GIT Mac / Windows
Untuk aplikasi klien GIT gui saya merekomendasikan Anda untuk pergi dengan Github.com,
GitHub adalah tempat untuk berbagi kode dengan teman, rekan kerja, teman sekelas, dan orang asing. Lebih dari lima juta orang menggunakan GitHub untuk membangun hal-hal luar biasa bersama.
Pengaturan Unity3d
Anda perlu melakukan pengaturan ini
Beralih ke File Meta Terlihat di Edit → Pengaturan Proyek → Editor → Mode Kontrol Versi.
Aktifkan opsi Eksternal di Persatuan → Preferensi → Paket → Repositori
Beralih ke Memaksa Teks dalam Edit → Pengaturan Proyek → Editor → Mode Serialisasi Aset.
Sumber: Menggunakan Git Dengan Kontrol Sumber Game 3D Games
sumber
Preferences > Packages
di Unity 5.x Normal? tyUntuk menambah semua yang dinyatakan, juga ideal untuk menggunakan git lfs dengan Unity. Saya telah menggunakan ini sejak keluar dan saya tidak punya masalah dengan itu.
Anda akan ingin menambahkan ini di
.gitattributes
sebelah.gitignore
file AndaItu adalah daftar file bergulir saya. Jika Anda menggunakan file biner tambahan yang tidak terdaftar, tambahkan mereka.
Saya juga memiliki file yang dikonfigurasi untuk menggunakan yamlmerge, Anda perlu mengatur ini. Anda dapat membacanya di sini: http://docs.unity3d.com/Manual/SmartMerge.html
sumber
Kami sekarang memiliki integrasi tanpa batas ke kesatuan dengan ekstensi Github ke Persatuan ... https://unity.github.com/
Ekstensi GitHub untuk Unity yang baru membawa alur kerja GitHub dan lebih banyak lagi ke Unity, memberikan dukungan untuk file besar dengan Git LFS dan penguncian file.
Pada saat penulisan proyek ini dalam alfa, tetapi masih dapat digunakan untuk proyek pribadi.
sumber
Saya pikir saya mungkin memposting yang lebih sederhana
.gitignore
untuk siapa saja yang tertarik:sumber
UnityPackageManager/
danPackages/
).Hal-hal utama yang perlu diingat ketika menggunakan git untuk kontrol versi kode sumber unity-3d:
(A) JANGAN check-in di folder Library . Saya telah membuat kesalahan ini beberapa kali di masa lalu dan telah menderita karenanya! Hapus ATAU pindah folder folder sebelum menambahkan proyek / file Anda ke git.
(B) Gunakan "File Meta Terlihat" - untuk versi kesatuan terbaru - 5.3.4 dan di atas ini terjadi secara default. Untuk beberapa versi sebelumnya, Anda perlu mengubah pengaturan di bawah: Edit-> Pengaturan Proyek-> Kontrol Versi
(C) Gunakan file .gitignore untuk Unity- untuk memastikan kewarasan tetap terjaga dan file tidak perlu ditambahkan - jika di android / tizen - tambahkan aturan untuk mengecualikan file APK dan TPK agar tidak ditambahkan ke repositori. Google berkeliling untuk file .gitignore untuk persatuan ATAU menggunakan model ini .gitignore untuk Persatuan yang disediakan oleh GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D) Pastikan file .gitignore ditambahkan ke repositori sebagai file pertama yang ditambahkan - karena sebelumnya saya secara pribadi telah melewatkan menambahkan file .gitignore. Punya banyak pemikiran di belakang tentang mengapa ini terjadi- tetapi saat ini saya hanya menyalin dan menambahkan file .gitignore sebagai langkah pertama pengaturan repositori.
Jadi ... untuk membuat proyek Persatuan siap untuk git, lakukan hal berikut:
(1) Buka folder proyek
(2) Ketikkan git init.
(3) Salin file .gitignore: Di MacOS: cp ~ / Downloads / .gitignore Di Windows: salin c: \ Users [nama pengguna] \ Downloads.gitignore.
(4) git tambahkan .gitignore
(5) git add *
Semoga ini bisa membantu ... semua yang terbaik!
sumber
Edit -> Project Settings -> Editor
Setel Kontrol Versi ke file meta. Atur Serialisasi Aset untuk memaksa teks.
Saya pikir ini yang Anda inginkan.
sumber
Saya lebih suka Anda menggunakan BitBucket, karena tidak umum dan ada tutorial resmi oleh Unity on Bitbucket.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
semoga ini membantu.
sumber
Anda bisa menggunakan Github for Unity , sebuah Unity Extension yang membawa alur kerja git ke UI Unity.
Github for Unity baru saja merilis versi 1.0 dari ekstensi.
sumber
Hanya Aset dan Pengaturan Proyek folder perlu berada di bawah kendali versi git.
Anda dapat membuat gitignore seperti ini.
sumber
Unity juga Menyediakan kontrol versi Sumbernya sendiri. sebelum unity5 itu unityAsset Server tapi sekarang sudah didepresiasi. dan meluncurkan sistem kontrol SVN baru yang disebut unity kolaborasi. tetapi masalah utama menggunakan unity dan setiap SVN melakukan dan menggabungkan adegan. tetapi Non svn memberi kita cara untuk menyelesaikan konflik semacam ini atau menggabungkan adegan. jadi tergantung pada Anda yang SVN Anda kenal. Saya menggunakan alat SmartSVN di Mac. dan kura-kura di jendela.
sumber
Hanya menambahkan pada subjet dari Gitignore. Cara yang disarankan hanya mengabaikan Library dan Temp, jika itu adalah akar dari proyek git Anda. jika Anda seperti saya dan kadang-kadang membutuhkan proyek persatuan untuk menjadi bagian dari repo, bukan keseluruhan repo, string yang benar di gitignore adalah:
sumber
Saya ingin menambahkan alur kerja yang sangat sederhana dari seseorang yang telah frustrasi dengan git di masa lalu. Ada beberapa cara untuk menggunakan git, mungkin yang paling umum untuk unity adalah GitHub Desktop, Git Bash dan GitHub Unity
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
Intinya mereka semua melakukan hal yang sama tetapi pilihan penggunanya. Anda dapat memiliki git untuk pengaturan file besar yang memungkinkan penyimpanan file besar gratis 1GB dengan penyimpanan tambahan yang tersedia dalam paket data sebesar $ 4 / bln untuk 50GB, dan ini memungkinkan Anda untuk mendorong file> 100mb ke repositori jarak jauh (ini menyimpan file aktual pada sebuah server dan dalam repo Anda sebuah pointer)
https://git-lfs.github.com/
Jika Anda tidak ingin mengatur lfs untuk alasan apa pun Anda dapat memindai proyek Anda untuk file> 128 mb di windows dengan mengetikkan ukuran: besar di direktori tempat Anda memiliki proyek Anda. Ini bisa berguna untuk mencari file besar, meskipun mungkin ada beberapa file antara 100mb dan 128mb yang terlewat.
Format umum dari git bash adalah
git add. (menambahkan file yang akan dikomit)
git commit -m 'message' (melakukan file dengan pesan, mereka masih ada di komputer Anda dan tidak di repo jarak jauh, pada dasarnya mereka telah 'diversi' sebagai komit baru)
git push (dorong file ke repositori)
Kerugian dari git bash untuk proyek-proyek kesatuan adalah bahwa jika ada file> 100mb, Anda tidak akan mendapatkan kesalahan sampai Anda mendorong. Anda kemudian harus membatalkan komit Anda dengan mengatur ulang kepala Anda ke komit sebelumnya. Agak merepotkan, terutama jika Anda baru menggunakan git bash.
Keuntungan dari GitHub Desktop, adalah SEBELUM Anda melakukan file dengan 100mb itu akan memberi Anda pesan kesalahan popup. Anda kemudian dapat mengecilkan file-file itu atau menambahkannya ke file .gitignore.
Untuk menggunakan file .gitignore, buat file bernama .gitignore di direktori root repositori lokal Anda. Cukup tambahkan file satu baris pada satu waktu yang ingin Anda hilangkan. SharedAssets dan file folder non-Aset lainnya biasanya dapat dihilangkan dan secara otomatis akan terisi kembali di editor (paket dapat diimpor kembali dll). Anda juga dapat menggunakan wildcard untuk mengecualikan jenis file.
Jika orang lain menggunakan repo GitHub Anda dan Anda ingin mengkloning atau menarik, Anda juga memiliki opsi-opsi itu di desktop GitHub atau Git bash.
Saya tidak menyebutkan banyak tentang paket Unity GitHub di mana Anda dapat menggunakan GitHub di editor karena secara pribadi saya tidak menemukan antarmuka yang sangat berguna, dan saya tidak berpikir secara keseluruhan itu akan membantu orang mengenal git, tapi ini hanya saya Pilihan.
sumber