Git: Cabang atau Garpu?

17

Saya memiliki proyek game yang akan memiliki dua versi:

  1. Versi gim yang sederhana, intinya.
  2. Versi lanjutan dari game.

Saya memiliki versi pertama di repositori publik saya, dan hanya saya yang akan mengerjakannya. Sedangkan untuk versi ke-2, dua teman saya dan saya akan mengerjakannya. Bagian penting adalah bahwa saya ingin kedua versi tetap berada di repositori saya.

Saya pikir saya mungkin menggunakan cabang untuk ini, tetapi mempertimbangkan pertanyaan ini dan jawabannya , bukan praktik yang baik untuk melakukannya dalam hal versi. Sejauh yang saya ketahui, forking repositori Anda sendiri tidak dimungkinkan.

Apa pilihan saya di sini? Bagaimana saya bisa menyimpan kedua versi di repositori saya?

Varaquilex
sumber
3
Garpu adalah cabang, hanya disimpan di tempat lain.
@MichaelT Oke. Apakah percabangan dimaksudkan untuk digabung pada titik tertentu, seperti cabang?
Varaquilex
22
Fork adalah konsep github, bukan konsep git. Ini hanya mengkloning dan meletakkannya di akun Anda. Jadi kloning adalah apa yang Anda cari. Lihat stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr
@Varaquilex Way, Anda perlu menyimpan kedua versi dalam satu repositori? Juga forking repositori akan membuat repositori baru di akun Anda.
Mahdi
1
Mengapa tidak hanya memiliki satu versi yang dapat berjalan dalam mode sederhana atau mode lanjutan? Tentu saja beberapa bagian dari kode hanya akan aktif secara sederhana dan beberapa bagian hanya aktif dalam lanjutan, tetapi saya membayangkan banyak yang akan dibagikan.
bdsl

Jawaban:

11

Bagi saya tampaknya Anda membutuhkan dua Repositori, bukan dua Cabang . Cabang adalah mekanisme untuk menangani perubahan dalam satu repositori untuk akhirnya menggabungkannya dengan sisa kode.

Jika Anda benar-benar ingin menyimpan kedua versi basis kode yang serupa di repositori yang sama, maka satu-satunya pilihan Anda adalah pergi untuk Cabang , namun seperti yang disebutkan sebelumnya, tujuan utama cabang adalah untuk memisahkan beberapa komit tertentu dengan cara bahwa mereka tidak bertentangan dengan sisa kode selama periode pengembangan, dan menggabungkan mereka ketika mereka siap untuk pergi.

Ada beberapa situasi di mana repositori memiliki dua cabang yang sedikit berbeda - misalnya versi 32-bit dan 64-bit dari kode-sumber yang sama, namun saya tetap menyarankan Anda untuk menggunakan repositori yang terpisah, jika itu merupakan pilihan.

Mahdi
sumber
6

Jawaban atas pertanyaan "haruskah saya mengkloning atau fork" persis sama dengan jawaban untuk pertanyaan ini "apakah saya ingin versi pribadi saya sendiri dari proyek ini?" yes = fork, no = clone repositori.

Pada git, branch adalah hal yang ringan yang seringkali bersifat sementara dan dapat dihapus. Garpu (pada github) adalah proyek baru yang didasarkan pada proyek sebelumnya. Anda mengkloning repositori untuk mengerjakannya sebagai anggota tim.

Banyak proyek publik meminta Anda membayar proyek untuk menjaga perubahan kerja dari proyek utama.

Untuk fase 2, percabangan proyek kemudian clone ke komputer Anda dan minta teman Anda melakukan hal yang sama.

DwB
sumber
Bagaimana saya bisa melakukan proyek sendiri?
Varaquilex
pilih repositori di github lalu klik fork (tombol di kanan atas untuk saya)
DwB
Saya tahu bagaimana melakukan itu, masalahnya adalah ketika Anda mencoba mengkloning proyek Anda sendiri, Anda cukup diarahkan ke repositori, seperti Anda menekan tombol refresh. Tidak ada repositori tambahan terdaftar ketika Anda menelusuri repositori Anda setelah Anda mencoba untuk garpu proyek Anda sendiri. Saya pikir saya akan membuat repo baru, menyalin isi dari repo lain yang ingin saya garpu dan terus bekerja dengan orang lain di sana.
Varaquilex
0

Apa yang benar-benar terdengar seperti yang Anda inginkan adalah submodule. Jika Anda membuat repo pertama (repo sederhana pribadi Anda) dan kemudian menambahkannya sebagai submodule ke repo versi lanjutan, maka Anda harus dapat melacak dan menarik perubahan ke submodule dalam repo lanjutan saat Anda mengembangkan repo sederhana pribadi.

Ryan Holleran
sumber
1
Beberapa orang telah meluangkan waktu untuk -1 tanggapan Ryan, tetapi tidak meluangkan waktu untuk memberikan komentar mengapa, dan perilaku ini bertentangan dengan semangat pedoman SO. Jika dalam pertanyaan OP, "inti" identik di kedua pohon, memiliki pembungkus "sederhana" dan "maju" di sekitar inti, maka jawaban ini setidaknya masuk akal.
Scott Prive
Saya telah meningkatkan suara tetapi dia mungkin harus memasukkan penjelasan seperti milik Anda yang menjelaskan mengapa submodule akan bagus, dan bagaimana cara kerjanya. Memisahkan kode umum ke dalam pustaka yang dapat dimasukkan sebagai submodule adalah ide yang baik, tetapi tanpa menentukan bahwa itu harus dilakukan, saran submodule tidak segera tampak masuk akal.
Sean Burton