Apa arti kata-kata ini di Git: Repositori, fork, branch, clone, track?

130

Jujur saya tidak jelas tentang semantik di sini. Mereka semua tentang salinan / varian dari unit kode + sejarah, tetapi sebelumnya saya tidak yakin bisa mengatakannya. Apakah struktur logis ini dijelaskan di suatu tempat?

Eric Anderson
sumber
5
Saya akan merekomendasikan membaca bab-bab pertama dari buku Pro Git ( progit.org/book ).
ewall
61
+1. Banyak tutorial git yang menunjukkan kepada Anda bagaimana melakukan tugas-tugas tertentu tanpa menjelaskan arti kata-kata tertentu atau cara kerja git. Meminta sumber daya yang membahas topik itu adalah pertanyaan yang sah.
Daniel Stutzbach
14
Seandainya saya bisa memberi +1 komentar Daniel lebih lanjut. Sementara arti dari beberapa istilah (misalnya repositori) harus jelas, hubungan mereka tidak selalu (cabang vs garpu), dan makna sebenarnya mudah disalahartikan oleh seseorang yang digunakan untuk VCS terpusat. Selain itu, lihat Pro Git "apa itu cabang?" bagian - apakah pengguna dasar benar-benar ingin tahu tentang gumpalan dan pohon, atau apakah mereka hanya ingin tahu secara kualitatif apa cabang itu?
Cascabel
1
@DanielStutzbach dimungkinkan untuk mengirimkan komentar tentang hal-hal yang tidak jelas dalam buku ini. (Saya tidak tahu terminologi yang benar untuk mengatakan itu.) Saya telah melakukan itu, saya telah mengatakan bahwa buku ini perlu mendefinisikan apa itu repositori. Saya setuju bahwa cukup sulit untuk mendapatkan materi konseptual dari orang-orang yang memahami sesuatu dengan sangat baik. Buku itu (saat ini) berbicara tentang database tanpa mendefinisikan apa itu dalam konteks ini dan tidak mengatakan apa pun tentang repositori.
user34660

Jawaban:

146

Repositori hanyalah sebuah tempat penyimpanan riwayat pekerjaan Anda. Itu sering hidup dalam a.git subdirektori dari copy pekerjaan Anda - salinan status terbaru dari file yang sedang Anda kerjakan.

Untuk melakukan fork proyek (mengambil sumber dari repositori seseorang pada titik waktu tertentu, dan menerapkan perubahan yang berbeda di dalamnya), Anda akan mengkloning repositori jarak jauh untuk membuat salinannya, lalu lakukan pekerjaan Anda sendiri di repositori lokal Anda dan komit perubahan.

Di dalam repositori Anda memiliki cabang, yang secara efektif bercabang dalam repositori Anda sendiri. Cabang Anda akan memiliki leluhur yang memiliki komit dalam repositori Anda, dan akan menyimpang dari komit tersebut dengan perubahan Anda. Anda nanti dapat menggabungkan perubahan cabang Anda. Cabang memungkinkan Anda bekerja pada banyak fitur berbeda sekaligus.

Anda juga dapat melacak masing-masing cabang di repositori jarak jauh. Ini memungkinkan Anda untuk menarik perubahan dari cabang individu lain dan menggabungkannya menjadi cabang Anda sendiri. Ini mungkin berguna jika Anda dan seorang teman sedang mengerjakan fitur baru bersama-sama.

Ada banyak buku git hebat online. Lihat ProGit dan Git Magic untuk memulai, serta tutorial resmi dan buku komunitas.

nfm
sumber
Tentu saja membaca manual F dan tutorial sangat mendasar. Tetapi bagi saya ini adalah ringkasan yang bagus untuk keseluruhannya. Sangat dihargai!
brasofilo
Perhatikan bahwa Anda dapat mengganti direktori kerja lokal Anda ke cabang baru ("git checkout <new_branch>"). Dalam hal ini, file direktori kerja lokal Anda DIGANTI oleh konten cabang yang Anda pindahkan. Tetapi Anda tidak kehilangan pekerjaan Anda: Git menyimpan semua perubahan yang dilakukan ("git commit") yang Anda buat pada cabang sebelumnya di "database" Git (folder .git tersembunyi) dan akan memungkinkan Anda mengganti file Anda.
KrisWebDev
3
Saya pikir itu memerlukan perhatian khusus yang secara historis, terlepas dari VCS mana yang Anda gunakan, forking dan branching dianggap dua hal yang terpisah. Percabangan dianggap kesepakatan yang menguntungkan dan tersirat antara pengembang. Forking lebih serius karena menyiratkan bahwa pengembang yang mengerjakan proyek tidak menyetujui beberapa hal dan memutuskan untuk berpisah. Garpu yang sukses biasanya digabungkan kembali ke dalam satu proyek kemudian setelah kedua belah pihak mencapai kesepakatan. Sejak itu, Git (dan GitHub) telah mengaburkan istilah-istilah ini dan kedua istilah pada dasarnya mewakili ide yang sama tetapi dengan cara yang berbeda.
redteam316
Jadi repositori tidak memiliki file untuk proyek di dalamnya? Anda mengatakan tempat di mana sejarah pekerjaan Anda disimpan . Apakah itu semuanya? Hanya sejarah file tetapi bukan file itu sendiri?
user34660
13

Saya akan menjawab pertanyaan saya sendiri dengan RTFM.

Tapi, baca manual yang bagus ini . Seperti yang penulis katakan:

“Kesimpulan yang saya dapat dari sini adalah bahwa Anda hanya dapat benar-benar menggunakan Git jika Anda memahami cara kerja Git. Hanya menghafal perintah mana yang harus Anda jalankan pada waktu yang akan bekerja dalam jangka pendek, tetapi itu hanya masalah waktu sebelum Anda terjebak atau, lebih buruk lagi, memecahkan sesuatu.

“Setengah dari sumber daya yang ada di Git, sayangnya, hanya mengambil pendekatan itu: mereka memandu Anda melalui perintah mana yang harus dijalankan kapan, dan berharap bahwa Anda akan baik-baik saja jika Anda hanya meniru perintah itu. Setengah lainnya memang melalui semua konsep, tetapi dari apa yang saya lihat, mereka menjelaskan Git dengan cara yang mengasumsikan Anda sudah mengerti bagaimana Git bekerja. "

Eric Anderson
sumber
Pendahuluan ini sepertinya telah dipindahkan ke sbf5.com/~cduan/technical/git . URL asli masih berfungsi untuk saat ini.
Eric Anderson
1
Ini benar dalam konteks. Jika Anda harus produktif segera atau benar-benar hanya memeriksa kode, tidak apa-apa untuk tidak memiliki pemahaman mendalam tentang cara kerja git. Tutorialnya baik-baik saja. Ini adalah bagaimana saya masuk ke git. Namun, jika atau ketika Anda harus lebih maju seperti membuat cabang, garpu, rebase, dan tugas-tugas lebih lanjut lainnya, maka Anda harus tahu cara kerja git, terutama jika Anda latar belakang Anda berada dalam kontrol sumber terpusat.
Phil
3

GoogleTechTalk ini adalah pengantar yang luar biasa bagi Git untuk mempelajari apa yang sebenarnya terjadi di balik layar sambil mempelajari bahasanya juga. Itu diberikan oleh kontributor sangat awal untuk Git dan dia memberikan ceramah ini pada tahun 2007 sebagai cara pengenalan ke Git. Jika Anda menonton ceramah ini, Anda tidak hanya akan tahu apa setiap kata, seperti repositori, garpu, cabang, dll., Tetapi Anda juga akan tahu apa yang terjadi di balik layar ketika masing-masing dibuat, digabung, dll.

Alamatnya panjang tapi sangat informatif. Ini juga membedakan Git dengan Sistem Kontrol Versi lainnya sehingga Anda mendapatkan informasi mengapa Git dibuat seperti itu dan apa keunggulan komparatifnya dibandingkan sistem kontrol lainnya. Meskipun pembicaraan sudah lama, sangat membantu untuk bangkit dan berlari. Saya akan menonton ini sebelum saya melompat ke manual. Hasilnya akan lebih masuk akal, saya yakin.

Mat
sumber