Cara Git (Hub)

Jika Anda ingin membantu dalam membuat Sponge, Anda memiliki tambahan yang mengagumkan untuk API, atau Anda ingin memperbaiki Documents kami, maka Anda harus terbiasa dengan git dan GitHub. Jika Anda sudah terbiasa dengan mendua, cabang, menerbitkan, menarik-permintaan dan menjalankan, maka lewati topik ini. Jika Anda tidak tahu apa yang sedang kita bicarakan, lalu baca terus.

Catatan

Panduan ini mengasumsikan bahwa Anda telah membaca ../ menyiapkan/git dan Anda sudah menyiapkan mesin Anda dengan klien Git pilihan Anda.

Konsep Dasar Git dan GitHub

Git memungkinkan banyak pengembang untuk mengembangkan satu perangkat lunak secara bersamaan. GitHub adalah situs web tempat pengembang dapat berkolaborasi dan berbagi pekerjaan dengan orang lain. GitHub bergantung pada Git untuk pengelolaan pekerjaan tersebut.

Tip

Jika Anda tidak terbiasa dengan kosakata Git dan GitHub, lihatlah daftar 'glossary page di GitHub <https://help.github.com/articles/github-glossary/>`_.

Repo Overview

Dalam hal ini repo diberi nama `` SpongePowered``, memiliki dua cabang bernama `` master`` dan `` feature 1`` dan juga beberapa melakukan commit pada kedua cabang.

Mari kita memasukkan istilah-istilah ini ke dalam kontek - dimulai dengan repositori. The repositori (pendek: repo) adalah tempat di mana proyek menyimpan berkas-nya. Repositori SpongePowered terletak di `GitHub <https://github.com/SpongePowered> ` __. Namun, repo ini memiliki beberapa pembatasan akses untuk melestarikannya dari perubahan yang tidak diinginkan atau berbahaya. Anda tidak bisa hanya membuat perubahan sendiri, karena repo hanya bisa dibaca untuk pengguna biasa. Sekarang Anda mungkin bertanya-tanya bagaimana seharusnya mengajukan proposal dan perubahan. Nah, disitulah garpu * ikut bermain. Anda bisa ambil salinan repo SpongePowered, dan buat perubahan Anda di sana. Setelah selesai, Anda membukanya sebagai permintaan tarik (* PR *) pada repositori kami. Tambahan dan perubahan yang Anda usulkan kemudian dapat ditinjau ulang, dan staf akan memberi tahu Anda jika ada sesuatu yang salah, atau perlu perbaikan, dan akhirnya menggabungkan PR akhir.

Berikut adalah ringkasan singkat dari prosedur yang dijelaskan di atas, sebelum kita membahas secara rinci:

  1. Garpu repo pilihan Anda
  2. Kloning ke mesin lokal Anda
  3. Buat cabang baru
  4. Buat perubahan yang diinginkan
  5. Uji jika semuanya bekerja
  6. Komit perubahannya
  7. Sinkronkan mereka ke GitHub
  8. Mengusulkan perubahan dalam PR ke SpongePowered Repo
  9. Ubah ke PR Anda jika perlu
  10. PR Anda akan ditarik ke master oleh staf

Rincian silahkan!

1. Forking a Repo

Catatan

Langkah ini hanya diperlukan jika Anda tidak memiliki hak push pada repo yang sedang Anda ubah. Jika Anda bekerja di repo Anda sendiri, tidak ada garpu yang diperlukan. Lewati saja langkah ini dan `` kloning`` secara langsung. Jika Anda membuat perubahan pada Sponge dan Anda ** bukan staf, langkah ini diperlukan.

Sekarang setelah Anda tahu konsep dasarnya, kita akan membahas rinciannya. Pertama Anda perlu garpu repositori Anda ingin membuat perubahan. Ini bisa dilakukan di GitHub.com, di mana Anda akan menemukan tombol `` Cabang`` di bagian atas halaman repositori. Setelah menekannya, GitHub akan melakukan beberapa pekerjaan dan menyajikan tiruan repo asli untuk Anda. Anda akan melihat bahwa kloning sekarang berada di `` Akun GitHub/Kloning Nama Repo Anda``. Baiklah, langkah pertama selesai.

Catatan

Semua cabang dari repositori asli akan bercabang juga, Anda bisa menerima tiruan dari repo bercabang.

Repo forking

2. Cloning the Fork to Your local Machine

Sekarang Anda perlu membawa garpu ini ke mesin lokal Anda untuk membuat perubahan Anda. Buka Git Klien pilihan Anda (../menyiapkan/ git) dan klon garpu Anda ke komputer lokal Anda. Klien akan meminta Anda untuk membuat folder untuk menyimpan semuanya. Langkah kedua selesai, selesai!

Catatan

Sebagian besar langkah bisa dilakukan melalui GUI pilihan Anda. Jika sudah berpengalaman dengan antarmuka baris perintah, maka Anda bisa menggunakannya juga. Setiap langkah akan menunjukkan perintah yang dibutuhkan untuk mencapai hasil yang diinginkan.

Atau Anda bisa melakukan ini melalui CLI (antarmuka baris perintah, `` CMD`` atau `` powershell`` pada windows). Perhatikan bahwa Anda perlu membuat folder semuanya semakin kloning pada diri Anda sendiri sebelum mengetikkan perintah ini:

git clone git://github.com/YourGitHubAccount/ClonedRepoName.git
Repo cloning

3. Creating a New Branch

Sekarang bahwa anda memiliki lokal clone dari garpu anda, saatnya untuk membuat cabang untuk bekerja pada. Cabang-cabang yang dirancang untuk dapat mengembangkan dan menguji berbagai fitur atau penambahan pada saat yang sama, tanpa menyebabkan masalah dan kesalahan karena gangguan dari penambahan. Hal ini sangat disarankan bahwa anda tidak membuat perubahan pada master cabang. Sebaliknya, buat cabang baru sendiri (dengan nama masuk akal) dan membuat perubahan di sana.

Ini menyiratkan bahwa kita perlu membuat `` cabang`` terlebih dahulu, jadi mari kita pergi! Anda bisa melakukan ini melalui klien Anda (seharusnya ada tombol `` buat cabang`` di suatu tempat), atau Anda dapat menggunakan CLI dengan git:

git checkout -b [name_of_your_new_branch]

Hal ini akan menciptakan sebuah branch dengan nama pilihan anda dan beralih ke sana. Semua perubahan yang anda buat akan di cabang ini. Jika anda perlu untuk beralih ke cabang lain ( misalnya guru), menggunakan kembali perintah ini. Langkah ketiga selesai! Pekerjaan yang baik sejauh ini! Untuk mendapatkan gambaran dari cabang-cabang anda, hanya memiliki melihat anda git client atau menggunakan:

git branch
Branches

** Sekarang saatnya untuk membuat perubahan anda **. Gunakan pengarang atau IDE pilihan Anda untuk melakukan ini.

4. Test if Your Changes Work

Untuk SpongeAPI dan implementasi yang anda miliki untuk menjalankan gradle compileJava. Lanjutkan ke langkah berikutnya jika selesai tanpa kesalahan. Jika tidak, membuat koreksi yang tepat dan mencoba lagi.

Untuk SpongeDocs Anda bisa mengirimkan PR Anda. Ini akan dibangun secara otomatis dan mengungkapkan kemungkinan kesalahan. Pilihan lainnya adalah membangun Docs secara lokal. Lihat di `Readme.md di Document <https://github.com/SpongePowered/SpongeDocs/blob/master/README.md> ` _ untuk petunjuk lebih lanjut.

5. Commit the Changes

Ketika anda selesai, anda perlu untuk menggabungkan mereka ke dalam satu paket (a komit) dan mendapatkan mereka ke cabang. Lagi-lagi anda git client akan membantu anda keluar. Tambahkan nama yang bermakna untuk anda yang berkomitmen dan deskripsi singkat jika diperlukan. Hal ini dapat dilakukan melalui CLI juga:

Pertama mengumpulkan semua file dan folder yang ingin dimasukkan ke dalam komit:

git add <file>
git add <folder>

Sekarang file ditambahkan ke daftar perubahan yang ingin Anda sertakan di komit, lakukan saja

git commit

Ini akan membuka jendela teks, di mana anda dapat menambahkan pesan jika anda inginkan. Silahkan lihat pada gambar di bawah ini. Anda akan melihat bahwa anda melakukan yang masih disimpan secara lokal saja dan tidak pada garpu anda di GitHub.

Catatan

Anda dapat memiliki beberapa melakukan PR. Hanya pergi ke depan dan mengubah segala sesuatu yang anda butuhkan dan melakukan perubahan. Anda dapat menggabungkan komit pada satu komit nanti.

Jadi sekarang, langkah keenam sudah selesai. Hampir sampai!

Committing

6. Sync to GitHub

Sekarang kita perlu mendapatkan perubahan pada garpu Anda di GitHub. Semua yang Anda buat sejauh ini hanya disimpan secara lokal saat ini. Seperti biasa, Anda dapat menggunakan klien git Anda untuk melakukan ini (ada tombol di suatu tempat di GUI Anda), atau Anda dapat melakukannya melalui CLI:

git push <remote> <branch>

Dalam hal ini seharusnya:

git push origin feature/YourFeature
Pushing commits

7. Propose the Changes in a PR to the SpongePowered Repo

Anda bisa masuk ke halaman garpu di GitHub.com (seharusnya ada pemberitahuan di bagian atas halaman forks untuk memandu Anda), atau Anda dapat menggunakan klien GitHub untuk membuat permintaan tarik. GitHub resmi untuk klien Win menggunakan sudut kanan atas jendela untuk ini.

PRs

Amati PR Anda jika Diperlukan

Jika kami ingin Anda membuat perubahan pada PR Anda, maka lakukan lebih banyak komitmen pada cabang yang dibuat di atas. Selanjutnya komit akan ditambahkan ke PR anda secara otomatis.

9. Your PR Gets Pulled

Itu dia. Kita sudah siap! Kerja bagus!

Git Lanjutan

Squashing dengan Mendasarkan ulang

Katakanlah anda telah selesai anda penambahan repo, dan mari kita berpura-pura bahwa anda dibuat 137 melakukan sementara mendapatkan itu dilakukan. Anda melakukan sejarah pasti akan terlihat berantakan. Ini akan menjadi malu jika mereka semua dicatat ke dalam repo, bukan? Terlalu banyak sepele melakukan juga mengacaukan proyek komit sejarah. Untungnya Git memiliki alat yang bagus untuk menghindari hal ini, itu disebut rebase. Rebasing dapat mengambil 137 kecil melakukan dan mengubah mereka ke dalam satu besar melakukan. Mengagumkan, bukan? Alih-alih menciptakan kembali roda, kami akan berikan anda sebuah link untuk yang sangat singkat dan mudah dimengerti meremas tutorial:

' Git siap: Squasing dengan Mendasarkan ulang <http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html> '_

Inilah apa yang dilakukannya, dipertunjukkan dengan baik:

Squashing commits

Pengaturan Ke Jarak Jauh

Secara alami asli repo adalah induk langsung dari garpu dan garpu anda adalah induk langsung dari lokal clone. Namun asli repo bukan induk langsung dari klon anda. Ini bukan masalah di tempat pertama, tetapi hal ini mencegah anda dari memperbarui clone anda untuk perubahan terbaru pada asli repo. Jika anda setup asli repo sebagai remote (baca: "orang tua") dari clone anda, anda akan mampu untuk meraih semua perubahan yang dibuat ke repo ini dan menerapkannya ke daerah clone. Lihat di bawah untuk melihat bagaimana meraih dan memperbarui karya.

Setting up a remote

Baik-baik saja. Langkah ini dilakukan melalui CLI sebagai yang paling Gui yang hilang ini (yang agak canggih) fungsi:

git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Jika anda tidak yakin apakah itu bekerja sesuai dengan yang diinginkan atau jika anda mau memeriksa remote mana yang baru saja diatur, anda bisa periksa via:

git remote -v

keluaran harus terlihat seperti:

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Catatan

Jika anda melihat peringatan fatal: saat ini cabang YourBranchName tidak memiliki hulu cabang., kemudian cabang mungkin tidak berada di hulu remote. Hal ini dapat terjadi jika ini adalah pertama kalinya anda mendorong komit untuk cabang baru. Untuk mendorong arus cabang dan mengatur remote sebagai hulu, gunakan git push --set-hulu asal YourBranchName.

Rebassing

Katakanlah anda membuat beberapa perubahan yang anda inginkan cabang, tetapi sementara itu, orang lain diperbarui repo. Ini berarti bahwa anda fork dan clone anda sudah ketinggalan jaman. Ini bukan masalah besar, tapi untuk menghindari masalah ketika penggabungan penambahan di kemudian hari, itu sangat disarankan untuk rebase perubahan terhadap perubahan terbaru pada asli repo. Jika anda belum mengatur remote repo namun, lakukan ini sebelum mencoba untuk rebase.

Menyukseskan rebase memerlukan beberapa langkah:

1. Fetch the Changes on the Remote Repo

Pertama, anda perlu untuk mengambil perubahan pada repositori jauh. Ini adalah (lagi-lagi) dilakukan melalui CLI:

git fetch upstream

Ini akan menambahkan semua perubahan dari remote hulu dan menempatkan mereka ke dalam sementara hulu/master cabang.

2. Merge Remote Changes locally

Sekarang kami perlu untuk memilik lokal kami ' 'master' 'cabang:

git checkout master

Setelah itu kita akan menggabungkan perubahan yang termasuk dalam hulu/master ke lokal kami master cabang:

git merge upstream/master

Baiklah, ini adalah apa yang telah kami lakukan sejauh ini:

Rebasing 1

3. Rebase Local Branch against Updated Master

Selanjutnya adalah rebasing cabang lokal anda bekerja dalam melawan tim lokal master. Kita perlu beralih ke kerja cabang (di sini: fitur/yourfeature) dan kemudian melakukan rebase. Hal ini dilakukan melalui:

git checkout feature/yourfeature
git rebase master

Ini akan memutar ulang cabang anda, tambahkan komitmen dari master dan lalu terapkan perubahan anda lagi. Hasil nampak seperti ini:

Rebasing 2

4. Push Everything to your Fork

Hal terakhir yang perlu kita lakukan adalah untuk mendorong semuanya ke garpu. Jika anda sudah membuat PR, maka akan mendapatkan update secara otomatis:

git checkout master
git push -f
git checkout feature/yourfeature
git push -f
Rebasing 3

Kamu berhasil, bagus sekali! Kerja bagus dan dilakukan dengan baik dan terimakasih karena telah menerbangkan Rebase-Air!