Beginner's Guide To Git - LlemonDuck/runelite GitHub Wiki
For a more general guide, see this page.
For a cheat sheet, see this page.
Things to remember
- Keep work outside of
master
. Work should take place in topic branches, and have a pull request made to bring it into RuneLite'smaster
branch. - Branch names are generally all-lowercase-with-dashes-between-words.
- Commit messages should use present-tense imperative verbs. (e.g. "change x to y", not "changed x to y").
Workflow
Fork runelite if you haven't
Click the "fork" button in the upper right of the page. That will create a copy of the project, just for you, under your username.
Download your fork if you haven't
Execute, in the directory you want to work within:
git clone https://github.com/YOUR_USERNAME/runelite.git
cd runelite/
That will create a "runelite" directory in some/directory/
. If you are using IntelliJ IDEA, follow this guide to get the project building.
upstream
remote if you haven't
Add the Execute, in the "runelite" directory you created earlier:
git remote add upstream https://github.com/runelite/runelite.git
That will add a remote (a place you can access that has a copy of the repository) to your local copy of RuneLite.
Update your local copy
To incorporate the latest changes from RuneLite in your local copy, first check out the local branch you want to update. For example, you can check out your master branch by running:
git checkout master
Next, you can pull down the latest changes to the branch you have checked out by running:
git pull upstream master
Which will get the latest code from RuneLite's master branch. If there are merge conflicts, consult the document linked above or ask on Discord.
Create a branch to work in
When you're ready to begin work on a new feature, pull down the latest copy of master as above and make sure you're in the master
branch.
Run:
git checkout -b some-feature-branch-name
That command will branch (create a copy of the code at the current branch and give it a name) and checkout (switch to working on) a new feature branch for you to work in.
Change the active branch
git checkout some-branch-name
List branches
git branch -v
Delete a branch
git branch -d some-branch-name
If the command won't complete, and you are 100% certain you do not want that branch anymore, run:
git branch -D some-branch-name
To forcibly delete the branch.
To delete a branch on Github in your fork, run:
git push -d origin some-branch-name
Save your work
Once you've done some work in the current branch, you can run:
git status
To check the status of the current branch. Files modified/added/removed will be in red, while files in the staging area in green.
Add a modified/added/removed file to the staging area
git add filename.extension
git add *
git add .
When you commit, all staged files are added to a commit which contains all the differences between the files as they were before, and how they are with your changes. Any unstaged files will not have the differences saved.
Commit with a descriptive message saying what you did:
git commit
Warning
git commit
will probably launch vi
, the visual editor. If you do not know how to use vi
, here is a very brief guide. Alternatively, you can run git commit -m "commit message here"
to write a commit message without entering the editor.
vi
is a modal editor. By default, the editor is in command mode. If you try to type in it, it will almost certainly not do what you expect. To enter insert mode, which is not entirely unlike other text editor's default states, press i
. You will see the bottom line of text change to --INSERT MODE--
.
Now that you are in insert mode, type your commit message. Traditionally, the first line is a brief summary of what changes you made, then an empty line, then some text describing the what, how, or why of your change. For example,
Clarify beginner's guide to git
Added steps, separated sections, and added a section on vi.
Unsure if the vi section is clear, or if it'll just be confusing.
Some of the sections might be too technical or too high level; I
added a link at the top to another guide if users find this one
confusing.
While you are editing your message, the editor will add line breaks on its own. Let it. Once you are done, press escape to change back to command mode, then type :wq
and press enter to finish writing your commit message. Your code will be committed locally.
If you ever get lost in vi
and aren't sure what state you're in, press escape a bunch and then type :q!
and press enter to quit without saving. You will have to commit again to start the process once more.
Put your work online
To get your work back onto your Github, commit your work and run:
git push origin some-branch-name
Once your work is online, you can make a pull request to bring it back into RuneLite.
For more information on submitting a Pull Request, see here.