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

This guide assumes that you've read Memasang Git and that you've already setup your machine with a Git client of your choice.

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

All branches from the original repository will get forked too, you receive an exact clone of the forked repo.

Repo forking

2. Cloning the Fork to Your local Machine

Now you need to get this fork to your local machine to make your changes. Open the Git Client of your choice (Memasang Git) and clone your fork to your local machine. The client will ask you for a folder to store everything in. Second step finished, well done!

Catatan

Most steps can be done via GUI of your choice. If you're experienced with a command line interface, then you can use it too. Each step will show you the required commands to achieve the desired result.

Alternatively, you can do this via CLI (command line interface, CMD or powershell on windows). Note that you need to create the folder everything is getting cloned to yourself before typing this command:

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]

This will create a branch with the name of your choice and switch to it. All changes you're about to make will be on this branch. If you need to switch to another branch (for example master), just reuse this command. Third step done! Good job so far! To get an overview of your branches, just have a look at your git client or use:

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

When you're done, you need to bundle them into a single package (a commit) and get them into the branch. Again, your git client will help you out. Add a meaningful name to your commit and a short description if needed. This can be done via CLI too:

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

You can either go to your forks page on GitHub.com (there should be a notice at the top of your forks page to guide you), or you can use your GitHub client to create a pull-request. The official GitHub for Win client uses the top right corner of the window for this.

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

Let's say you have finished your additions to the repo, and let's pretend that you made 137 commits while getting it done. Your commit history will certainly look cluttered. It would be a shame if they were all recorded into the repo, wouldn't it? Too many trivial commits also clutters the project commit history. Fortunately, Git has a nice tool to circumvent this, it's called a rebase. Rebasing can take your 137 small commits and just turn them into one big commit. Awesome, isn't it? Instead of reinventing the wheel, we'll just pass you a link to a very short and easily understandable squashing 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

Naturally the original repo is the direct parent of your fork and your fork is the direct parent of your local clone. However, the original repo isn't the direct parent of your clone. This isn't a problem in the first place, but it prevents you from updating your clone to the latest changes on the original repo. If you setup the original repo as a remote (read: "parent") of your clone, you'll be able to grab all changes made to this repo and apply it to your local clone. Look below to see how grabbing and updating works.

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.

A successful rebase requires several steps:

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!