Introduction to Git
Here we will explain how to get started with Git so that you can work collaboratively on code at the hackathon.
What do I need?
There are two main things you need:
1 - Git
If you're on windows you can either use the Github GUI application or Git command line version. As the command line version is global across Windows, Linux and Mac we will describe that here.
Note for Mac Users: Git comes pre-installed, however it maybe installed with a previous version, instead of the current version
Creating a Repository
After logging into GitHub you can create a new repository by clicking the + symbol at the top right. You should be presented with a form like screen asking for a repository name, if you already have your hack idea name you can enter it here or if not you could use the hackathon name (aka "HackSheffield 5"). These names don't need to be globally unique but must be different to any repository you've made before.
Enter in a short description of your hack here if you have one, this will be shown at the header of your repository and can be changed at any time so don't worry about not putting one in yet.
You now have infinite Public and Private repositories, a public repository can be seen by anyone whilst a private repository is just for you. Public repositories still require collaborators or pull requests to be changed by other people.
We will be creating the repository from scratch so no need for any of these settings to be changed. A file named "README.md" will be displayed at the front page of your repository and therefore can be used as a manual or title page. A .gitignore file can be used to select certain files in your repository to never commit such as files with passwords in. Licenses can be used to explain to a user what the can and can't do with your code.
Now click create and you have made a repository!
Linking your project to GitHub
With a repository now on github we can link this to a local folder.
Create a local project folder
First make a folder either using folder explorer or finder etc... or using the terminal/cmd/console you can use the command
cd to change directory (aka
cd Desktop) and then using
mkdir HS5) to create the folder. You'll need to then
cd into that folder again (aka
Initialise local folder
We now need to tell git that this is where our repository lives. We intitalise this by using the command
git init after
cding to our folder.
To begin we will make a README.md file in our new git repository, you can do this using notepad or in console using vim/emacs/nano, the fastest method is to echo directly into the file using
echo "# testRepository" >> README.md. We can then tell git we want to add these changes using
git add README.md or if you'd like to add all files in the folder
git add ..
These additions then need to be boxed into a commit using
git commit -m "First commit", here the -m stands for message and "First commit"is what these changes will be labeled as in GitHub.
Currently our folder doesn't know which repository to send this to and so we have to link the folder to our repository, int GitHub you should find the repository remote at the top labelled "Quick setup". Take the link shown there (Best to start with HTTPS) and type
git remote add origin followed by the link (aka
git remote add origin https://github.com/Hammie217/firstRepository.git). You should only ever need to run this command at setup of a repository.
Now git know what we want to commit and where to all we have to do is push or commits to GitHub, we do this using
git push origin master. Telling git we want to push our origin to the master branch.
You should now be able to see your code in GitHub after you refresh the page!
Collaborators can be added in: Settings -> Collaborators.
Where you should be able to search for their GitHub accounts.
To add more things to the repository there are three things you need to follow:
git add . git commit -m "Message" git push origin master
Merge conflicts happen when two people try to change the same file lines resulting in conflicting code. To fix these one contributor needs to act to mediate these conflicts to choose which code should stay and what is un-needed.
The best thing to do first is to find out where the issues are, the best method of doing this is
git status. Most of the time you will see
Both modified next to a file name, sometimes a file may have been deleted in another branch.
The easiest method is to use an IDE, start by finding the offending file(s), in Atom and VS Code the sections of code will be highlighted with buttons to select local or remote or both changes to be kept. Use your best intuition to change the code to what is best.
In the case you've messed up the merge conflicts and things don't work you can abort the merge at any point to return to the pre-merged state using
git merge --abort
After the code is working as desired a normal commit cycle of add, commit and push will send the merged file to GitHub.
Creating a branch
git checkout -b "BranchName"
git push origin BranchName
git checkout master git merge BranchName
Fork the repository you want to Pull Request using GitHub Fork button at the top right of the repository.
Clone the repository to your PC using
git clone RepositoryLink where the Repository link is the link found in your forked repository clone button.
Create a branch using
git checkout -b "BranchName"
git add . git commit -m "Message" git push origin BranchName
On the repository you would like to accept your PR you should see a green banner with a button exclaiming change. Follow the pull request section until you enter your code for a review.
Your code may be accepted or asked for changes depending on if your code meets the requirements. Simply make the changes and commit again, you may however be required to request a review from your previous reviewer.
Make a Pull Request and contribute!