Karena beberapa alasan, saya hanya punya satu repositori untuk digunakan.
Tapi saya punya banyak proyek termasuk java
proyek, php scripts
dan Android
proyek aplikasi.
Sekarang masalah saya adalah, saya harus meletakkannya ke sub-folder yang berbeda di dalam repositori.
Saya menggunakan IDE yang berbeda, Anda tahu, setiap IDE dapat memiliki ruang kerja sendiri.
Siapa yang bisa memberi tahu saya praktik terbaik untuk menyelesaikan masalah?
Jawaban:
Sementara kebanyakan orang akan memberitahu Anda untuk hanya menggunakan beberapa repositori, saya merasa ada baiknya menyebutkan ada solusi lain.
Solusi 1
Sebuah repositori tunggal dapat berisi beberapa independen cabang, disebut cabang yatim . Cabang-cabang yatim benar-benar terpisah satu sama lain; mereka tidak membagikan sejarah.
Ini menciptakan cabang baru, tidak terkait dengan cabang Anda saat ini. Setiap proyek harus di cabang yatim sendiri.
Sekarang untuk alasan apa pun, git perlu sedikit pembersihan setelah checkout anak yatim.
Pastikan semuanya dilakukan sebelum dihapus
Setelah cabang yatim itu bersih, Anda dapat menggunakannya secara normal.
Solusi 2
Hindari semua kerumitan cabang yatim. Buat dua repositori independen, dan dorong ke remote yang sama. Cukup gunakan nama cabang yang berbeda untuk setiap repo.
sumber
Solusi 3
Ini untuk menggunakan direktori tunggal untuk banyak proyek. Saya menggunakan teknik ini untuk beberapa proyek yang berhubungan erat di mana saya sering perlu menarik perubahan dari satu proyek ke proyek lainnya. Ini mirip dengan ide cabang yatim tetapi cabang tidak perlu menjadi yatim. Cukup mulai semua proyek dari keadaan direktori kosong yang sama.
Mulai semua proyek dari satu direktori kosong yang dikomit
Jangan berharap keajaiban dari solusi ini. Seperti yang saya lihat, Anda akan selalu mengalami gangguan dengan file yang tidak terlacak. Git tidak benar-benar tahu apa yang harus dilakukan dengan mereka dan jadi jika ada file perantara yang dihasilkan oleh kompiler dan diabaikan oleh file .gitignore Anda, kemungkinan mereka akan dibiarkan menggantung beberapa waktu jika Anda mencoba bertukar dengan cepat antara - misalnya - proyek perangkat lunak Anda dan proyek tesis PH.D.
Namun inilah rencananya. Mulai ketika Anda harus memulai proyek git apa pun, dengan melakukan repositori kosong, dan kemudian mulai semua proyek Anda dari keadaan direktori kosong yang sama. Dengan begitu Anda yakin bahwa dua banyak file cukup independen. Juga, berikan cabang Anda nama yang tepat dan jangan malas hanya menggunakan "master". Proyek Anda harus terpisah sehingga beri mereka nama yang sesuai.
Git melakukan (dan karenanya tag dan cabang) pada dasarnya menyimpan keadaan direktori dan subdirektori dan Git tidak tahu apakah ini adalah bagian dari proyek yang sama atau berbeda sehingga benar-benar tidak ada masalah bagi git menyimpan proyek yang berbeda dalam repositori yang sama. Masalahnya kemudian adalah Anda menghapus file yang tidak terlacak dari satu proyek saat menggunakan yang lain, atau memisahkan proyek nanti.
Buat repositori kosong
Mulai proyek Anda dari kosong.
Kerjakan satu proyek.
Mulai proyek lain
kapanpun kamu suka.
Beralih bolak-balik
Kembali dan maju antar proyek kapan pun Anda suka. Contoh ini kembali ke proyek perangkat lunak catur.
File yang tidak dilacak menjengkelkan
Namun Anda akan terganggu oleh file yang tidak terlacak saat bertukar antar proyek / cabang.
Ini bukan masalah yang tidak dapat diatasi
Diurutkan berdasarkan definisi, git tidak benar-benar tahu apa yang harus dilakukan dengan file yang tidak terlacak dan terserah Anda untuk mengatasinya. Anda dapat menghentikan file yang tidak dilacak untuk dibawa-bawa dari satu cabang ke cabang lainnya sebagai berikut.
Dengan memastikan bahwa direktori itu kosong sebelum memeriksa proyek baru kami, kami memastikan tidak ada menggantung file yang tidak terlacak dari proyek lain.
Penyempurnaan
Jika tanggal yang sama ditentukan setiap kali melakukan repositori kosong, maka komit kosong yang dibuat secara independen dapat memiliki kode SHA1 yang sama. Ini memungkinkan dua repositori untuk dibuat secara independen dan kemudian digabung bersama menjadi satu pohon dengan akar yang sama dalam satu repositori nanti.
Contoh
Hasil
Gunakan subdirektori per proyek?
Mungkin juga membantu jika Anda menyimpan proyek Anda di subdirektori jika memungkinkan, misalnya alih-alih memiliki file
memiliki
Dalam hal ini file perangkat lunak Anda yang tidak terlacak akan menjadi
chess/untracked_software_file.prog
. Ketika bekerja dithesis
direktori Anda tidak boleh diganggu oleh file program catur yang tidak terlacak, dan Anda mungkin menemukan kesempatan ketika Anda dapat bekerja dengan senang hati tanpa menghapus file yang tidak terlacak dari proyek lain.Juga, jika Anda ingin menghapus file yang tidak terlacak dari proyek lain, itu akan lebih cepat (dan lebih rentan untuk kesalahan) untuk membuang direktori yang tidak diinginkan daripada menghapus file yang tidak diinginkan dengan memilih masing-masing.
Nama cabang dapat menyertakan karakter '/'
Jadi, Anda mungkin ingin memberi nama cabang Anda sesuatu seperti
sumber
Saya akan menggunakan
git submodules
.lihat di sini Git repositori di repositori Git
Per Februari2019, saya sarankan
Monorepos
sumber
git submodule add [url to git repo]
- git-scm.com/book/en/v2/Git-Tools-Submodules