Setting up git: Difference between revisions

Jump to navigation Jump to search
490 bytes added ,  19:53, 24 July 2020
Updated the header with more recent links, and cleaned it up a bit.
(probably last quick fix)
(Updated the header with more recent links, and cleaned it up a bit.)
Line 1: Line 1:
This guide uses TortoiseGIT. While there are other programs out there, this one is the most commonly used. This guide is for Windows only.
This guide uses [https://tortoisegit.org/ TortoiseGit]. While there are other programs out there, this one is the most commonly used. This guide is for Windows only.


It's recommended if you don't want to read this that you just watch this video:https://www.youtube.com/watch?v=ZDR433b0HJY
More recent guides exist; here is a link to [https://forums.yogstation.net/index.php?threads/release-the-gitkraken-how-to-make-your-first-pull-request.15099/ Partheo's guide on the forums], which uses GitKraken and is aimed specifically at newbies who wish to contribute to Yogstation. There is also a [https://hackmd.io/@ZeWaka/goondev very modern guide by ZeWaka] from Goonstation that is adapted from that guide, and uses VSCode instead. Just make sure to change any reference from Goonstation to Yogstation instead!


Some further videos that are recommended watching for any git user:
Alternatively, there are a few video talks on git that may be informative to a new or experience git user.


https://www.youtube.com/watch?v=MYP56QJpDr4 - Git from bits up
- [https://www.youtube.com/watch?v=ZDR433b0HJY Introduction to Git with Scott Chacon of GitHub] (1:22:11)


https://www.youtube.com/watch?v=4XpnKHJAok8 - Linus Torvalds (yes that linus) on git
- [https://www.youtube.com/watch?v=MYP56QJpDr4 Git from BitsUp] (55:44)


== If you are having trouble ==
- [https://www.youtube.com/watch?v=4XpnKHJAok8 Tech Talk: Linus Torvalds on git] (1:10:14)
 
==If you are having trouble==
Watch this video guide if you are having difficulty with any step below. [http://www.youtube.com/watch?v=Z5tTCo6IHLg]
Watch this video guide if you are having difficulty with any step below. [http://www.youtube.com/watch?v=Z5tTCo6IHLg]
If you have further problems, contact someone on [[Community|#coderbus]]
If you have further problems, contact someone on [[Community|#coderbus]]


== Step 1 - Install Git ==
==Step 1 - Install Git==


* Go here: http://git-scm.com/downloads
*Go here: http://git-scm.com/downloads
* Download the Windows Git program.
*Download the Windows Git program.
* It should look something like 'Git-1.7.11-preview20120620.exe'
*It should look something like 'Git-1.7.11-preview20120620.exe'
* Install it and leave everything on default (just keep clicking next).
*Install it and leave everything on default (just keep clicking next).
* Wait till the installer has finished.
*Wait till the installer has finished.
* Step 1 over!
*Step 1 over!


== Step 2 - Register on Github ==
==Step 2 - Register on Github==


* Head over here: https://github.com/
*Head over here: https://github.com/
* Click '''Signup and Pricing''' in the top right-hand corner.
*Click '''Signup and Pricing''' in the top right-hand corner.
* Click the ''Create free account button'''.
*Click the ''Create free account button'''.
* Create an account with your username and email.
*Create an account with your username and email.
* Done!
*Done!


== Step 3 - Configure Git ==
==Step 3 - Configure Git==


'''OPTIONAL!'''
'''OPTIONAL!'''


* Head here: https://help.github.com/articles/set-up-git/#setting-up-git
*Head here: https://help.github.com/articles/set-up-git/#setting-up-git
* Follow the guide above from steps 2 to 4, you can install Git for Windows if you want however it's not recommended
*Follow the guide above from steps 2 to 4, you can install Git for Windows if you want however it's not recommended
* Now you have Git all setup, but if you're command line illiterate like me, you'll wanna have some fancy graphics!
*Now you have Git all setup, but if you're command line illiterate like me, you'll wanna have some fancy graphics!


== Step 4 - TortoiseGit ==
==Step 4 - TortoiseGit==


* Go here: http://code.google.com/p/tortoisegit/wiki/Download
*Go here: http://code.google.com/p/tortoisegit/wiki/Download
* Download the right TortoiseGit for your system.
*Download the right TortoiseGit for your system.
* When installing, click '''OpenSSH''' rather than TortoisePLink
*When installing, click '''OpenSSH''' rather than TortoisePLink
* Finish installing.
*Finish installing.


== Step 5 - Forking Code ==
==Step 5 - Forking Code==


* Head over to: https://github.com/yogstation13/Yogstation
*Head over to: https://github.com/yogstation13/Yogstation
* Click the '''Fork''' button in the top right corner.
*Click the '''Fork''' button in the top right corner.
* The page you'll be directed to is now your fork. You'll be pushing updates here, and making pull requests to have them merged the main (master) repository.
*The page you'll be directed to is now your fork. You'll be pushing updates here, and making pull requests to have them merged the main (master) repository.
* Copy the HTTP URL. It's next to the '''HTTP''' '''GIT''' and '''Git Read-Only''' buttons. It'll look something like: https://github.com/NAME/Yogstation
*Copy the HTTP URL. It's next to the '''HTTP''' '''GIT''' and '''Git Read-Only''' buttons. It'll look something like: https://github.com/NAME/Yogstation


== Step 6 - Downloading the Code ==
==Step 6 - Downloading the Code==


* Find a place you don't mind the code sitting.
*Find a place you don't mind the code sitting.
* Right click and choose '''Git Clone...'''
*Right click and choose '''Git Clone...'''
* The URL field should be filled with the URL of your Fork. If not, paste it in.
*The URL field should be filled with the URL of your Fork. If not, paste it in.
* Click Next and watch flying tortoises bring you your code.
*Click Next and watch flying tortoises bring you your code.


== Step 7 - Setting up TortoiseGit ==
==Step 7 - Setting up TortoiseGit==


* Right click '''on the folder that was created''' (usually called Yogstation-master), and go to '''TortoiseGit''' and then click on '''Settings'''.
*Right click '''on the folder that was created''' (usually called Yogstation-master), and go to '''TortoiseGit''' and then click on '''Settings'''.
* Click on '''Remote''' under '''Git'''.
*Click on '''Remote''' under '''Git'''.
* There should be one thing on the list of remotes, with the name: '''origin'''.
*There should be one thing on the list of remotes, with the name: '''origin'''.
* You're now adding the main repository as a source you can pull updates from.
*You're now adding the main repository as a source you can pull updates from.
* In the '''Remote''' box type in '''upstream'''.
*In the '''Remote''' box type in '''upstream'''.
* In the '''URL:''' box put: https://github.com/yogstation13/Yogstation.git
*In the '''URL:''' box put: https://github.com/yogstation13/Yogstation.git
* Click '''Add New/Save'''.
*Click '''Add New/Save'''.
* Click '''Ok'''.
*Click '''Ok'''.
* Almost done!
*Almost done!


== Step 8 - Updating your Repo ==
==Step 8 - Updating your Repo==


* Updating your repo with the master should be done before trying anything.
*Updating your repo with the master should be done before trying anything.
* Right-click the folder your repo is in and select '''TortoiseGit''' then '''Pull'''.
*Right-click the folder your repo is in and select '''TortoiseGit''' then '''Pull'''.
* Click the radial button next to '''Remote''' and make sure '''upstream''' (or whatever you called it) is selected next to it.
*Click the radial button next to '''Remote''' and make sure '''upstream''' (or whatever you called it) is selected next to it.
* The '''remote branch''' should be set to '''master'''.
*The '''remote branch''' should be set to '''master'''.
* Then click '''Ok'''. This will pull the latest changes from the master repo.
*Then click '''Ok'''. This will pull the latest changes from the master repo.


== Step 9 - Making a Branch ==
==Step 9 - Making a Branch==
* '''Branching your repo is very important for organising your commits, you should have a different branch for each unrelated code change (e.g. if you wanted to make some new sprites for one item and change the properties of another these should be in seperate branches), as Pull requests work off branches rather than commits this will allow you to make a seperate Pull Request per change. Doing this streamlines the whole process and will save everyone a bunch of headaches.'''
 
* Right-click in your working folder. Then choose '''TortoiseGit''', and '''Create Branch...'''
*'''Branching your repo is very important for organising your commits, you should have a different branch for each unrelated code change (e.g. if you wanted to make some new sprites for one item and change the properties of another these should be in seperate branches), as Pull requests work off branches rather than commits this will allow you to make a seperate Pull Request per change. Doing this streamlines the whole process and will save everyone a bunch of headaches.'''
* Type in your new branch name
*Right-click in your working folder. Then choose '''TortoiseGit''', and '''Create Branch...'''
* (Optional) Tick '''Switch to new branch'''
*Type in your new branch name
* Press '''Okay''' and your new branch is created
*(Optional) Tick '''Switch to new branch'''
*Press '''Okay''' and your new branch is created


To switch between Branches:
To switch between Branches:
* Right-click in your working folder. Then choose '''TortoiseGit''', and '''Switch/Checkout...'''
* Choose your Branch then press '''Okay'''


== Step 10 - Making a Commit ==
*Right-click in your working folder. Then choose '''TortoiseGit''', and '''Switch/Checkout...'''
*Choose your Branch then press '''Okay'''
 
==Step 10 - Making a Commit==
 
*A commit is confirmed change of the files in your repo, it's how you make changes permanently to the files in your repo, so try not to commit without making sure it works (though subsequent commits can fix it).
*As said before, you should use different branches to separate your commits/changes.  Don't commit to master.  It should be clean, so you can fall back on it if needed.
*To make your commits, you need to edit the files using BYOND's inbuilt editing tools. Make sure to [[Coding Standards|follow coding standards]] when making your changes! When you're finished, right click the folder you're working with and choose '''Git Commit -> "[Your Branch Name]"''' (Example: Git Commit -> "My_First_Branch")
*You can then select only the files you want to be committed by ticking or unticking them. You should also write a detailed commit summary, detailing what happened in that commit.
*Click '''Ok''' and the commit will be committed to your local repo!


* A commit is confirmed change of the files in your repo, it's how you make changes permanently to the files in your repo, so try not to commit without making sure it works (though subsequent commits can fix it).
==Step 11 - Making a Pull Request==
* As said before, you should use different branches to separate your commits/changes.  Don't commit to master.  It should be clean, so you can fall back on it if needed.
* To make your commits, you need to edit the files using BYOND's inbuilt editing tools. Make sure to [[Coding Standards|follow coding standards]] when making your changes! When you're finished, right click the folder you're working with and choose '''Git Commit -> "[Your Branch Name]"''' (Example: Git Commit -> "My_First_Branch")
* You can then select only the files you want to be committed by ticking or unticking them. You should also write a detailed commit summary, detailing what happened in that commit.
* Click '''Ok''' and the commit will be committed to your local repo!


== Step 11 - Making a Pull Request ==
*Right-click in your working folder. Then choose '''TortoiseGit''', and '''Push...'''
*Set '''Local''' and '''Remote''' to the name of the branch you committed before. (e.g. My_First_Branch)
*Under Destination, set Remote: to '''origin'''.
*Click '''Ok'''. This'll upload your changes to your remote repo (the one on GitHub).
*Head to your GitHub repo e.g https://github.com/NAME/Yogstation.git
*Click '''Pull Request''' at the top right.
*[[Getting_Your_Pull_Accepted|Give this a quick read.]]
*Fill out a summary and then create the pull request.
*You're done! In many cases there will be issues pointed out by other contributors, unfortunate merge conflicts, and other things that will require you to revisit your pull request.
*Optionally, view step 13 for a guide on cleaner commit logs, '''cleaner commits help maintainers review!'''


* Right-click in your working folder. Then choose '''TortoiseGit''', and '''Push...'''
==Step 12 - Checking Out Github PRs Locally (Optional)==
* Set '''Local''' and '''Remote''' to the name of the branch you committed before. (e.g. My_First_Branch)
* Under Destination, set Remote: to '''origin'''.
* Click '''Ok'''. This'll upload your changes to your remote repo (the one on GitHub).
* Head to your GitHub repo e.g https://github.com/NAME/Yogstation.git
* Click '''Pull Request''' at the top right.
* [[Getting_Your_Pull_Accepted|Give this a quick read.]]
* Fill out a summary and then create the pull request.
* You're done! In many cases there will be issues pointed out by other contributors, unfortunate merge conflicts, and other things that will require you to revisit your pull request.
* Optionally, view step 13 for a guide on cleaner commit logs, '''cleaner commits help maintainers review!'''


== Step 12 - Checking Out Github PRs Locally (Optional) ==
*'''This is a must for maintainers who need to easily test other people's code!'''
*'''This is a must for maintainers who need to easily test other people's code!'''
*Locate the section for your Github remote in the .git/config file. Note that it is hidden by default. It looks like this:
*Locate the section for your Github remote in the .git/config file. Note that it is hidden by default. It looks like this:
Line 120: Line 125:


*Now add the following line:
*Now add the following line:
::fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*
::fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*


Line 125: Line 131:
*To check out a particular pull request, use Switch/Checkout and select the branch from the drop-down list.
*To check out a particular pull request, use Switch/Checkout and select the branch from the drop-down list.


== Step 13 - Clean commits (Optional) ==
==Step 13 - Clean commits (Optional)==
 
*'''This is a guide specifically for TortoiseGit, our recommended client'''
*'''This is a guide specifically for TortoiseGit, our recommended client'''
* Your commit logs are filthy, full of one or two line commits that fix an error that makes you look bad, and the commit is called "Whoops" or "oops"
*Your commit logs are filthy, full of one or two line commits that fix an error that makes you look bad, and the commit is called "Whoops" or "oops"
* Navigate to your '''local version of the branch'''
*Navigate to your '''local version of the branch'''
* Ensure it is up to date with the '''remote'''
*Ensure it is up to date with the '''remote'''
* Go to '''Show log'''
*Go to '''Show log'''
* Select all the commits associated with this change or PR
*Select all the commits associated with this change or PR
* Right click and choose '''Combine to one commit'''
*Right click and choose '''Combine to one commit'''
* This will open up the standard commit interface for TortoiseGit, with the commit logs of the selected commits merged together
*This will open up the standard commit interface for TortoiseGit, with the commit logs of the selected commits merged together
* Perform the normal routine for a commit
*Perform the normal routine for a commit
* Go to '''push''' your branch to the '''remote branch'''
*Go to '''push''' your branch to the '''remote branch'''
* Ensure '''Force Overwrite Existing Branch (may discard changes)''' is selected to make sure the PR/Remote updates to contain just this squashed commit
*Ensure '''Force Overwrite Existing Branch (may discard changes)''' is selected to make sure the PR/Remote updates to contain just this squashed commit




{{Contribution guides}}
{{Contribution guides}}
[[Category:Game Resources]] [[Category:Guides]]
[[Category:Game Resources]]  
[[Category:Guides]]
5

edits

Navigation menu