Git and GitHub
I know why Linus called it that now!
If you're reading this there's a good chance you know at least the
basics of Git but if like me and you are the only person making
changes to your repos then there's a good chance that you just use
git push origin master
to move your changes from your local machine
to GitHub, this is not best practice.
What if it's not your repository you want to make changes to? You'll need to create a pull request, where you make a copy (fork) of the repo, make the changes to your copy (fork) then request that the owner of the original repo pulls your changes into their repo. All super straight forward, right?
As an example I'm going to document my change to the awesome-twitter-bots repo that @amanhimself asked me to contribute to after I made a Twitter bot with his guides.
Step 1
I will need to fork the repository on GitHub so I can make my changes.
Then clone my forked repository to where I'm all going to make the changes on my computer:
1$ git clone https://github.com/spences10/awesome-twitter-bots
Connect the fork to the Original Repository:
1$ git remote add upstream https://github.com/amandeepmittal/awesome-twitter-bots
Step 2:
Use git status
to check what branch you are currently on.
Make a (my) branch:
I'm adding the Twitter bot I made so I'm going to give my branch the same name as my repo
1$ git branch spences10-twitter-bot
Now change to that branch with:
1$ git checkout spences10-twitter-bot
It should say you have switched to the branch but you can check with
git status
Add your files note if you are adding a folder (like I am) just
using git add .
will add the folder as a file (which I learned from
bitter experience), what you will need to do is:
1$ git add spences10-twitter-bot/\\*
This will add the folder and all its contents, I would post my terminal 'output of shame' here as it would take up the whole screen. So now I have added the folder I need to commit to my local repo with:
1$ git commit -m 'initial commit'
I get the terminal output confirming my files are added, then I
git push
to my branch I checked out earlier:
1$ git push origin spences10-twitter-bot
A quick check of the repo on GitHub confirms that the files are there I'm now ready to add a contributor @amandeepmittal via the /settings/collaboration section of my repo. I can then copy the invite link and send to Aman, I'm sure he'll be thrilled to see it!
Step 3
Visit Aman's repo and GitHub will have detected that I have pushed a branch to a fork, from here I can click on the 'Compare & pull request' button.
In the 'Open a pull request' page I'll need to select the my fork and
then my branch, so spences10\awesome-twitter-bots
and my branch
which is spences10-twitter-bot
click the 'Create pull request'
button.
The rest is up to the repository owner (Aman) now where he can chose to merge my changes into his repo.
That's not the end though
It turned out that Aman just wanted me to update the README.md on the repo so my pull request was cancelled :flushed:
This was good though because I had the opportunity to go through the whole thing again, thus getting more familiar with the process, after making my changes to my fork it was another pull request [PR] which was then successfully merged as PR #2
Resources
A great resource for me was Git-It
And obviously the GitHub Help documentation.
2fa
Another thing to note is if you're using two factor authentication
you'll need to add your auth token in as a remote set-url
so you can
push/pull without having to authenticate each time.
git remote set-url origin https://yourgithubuser:your-token@github.com/yourgithubuser/yourrepo.git