git atlrug
DESCRIPTION
Intro to Git slide deck give as a presentation to the Atlanta Ruby Users Group.Covers Forking, pushing and pulling to Github, Pull requestsTRANSCRIPT
Remote repos process(single committer)
Public RepoLocated on Server (Github)
Private RepoLocated on your local machine
git push
Make file changesStage ChangesCommit Changes
git add filenamegit commit -m ‘…’ vi filename
Remote repos process(multiple committers)
Public RepoLocated on Server (Github)
Private RepoLocated on your local machine
1) git push
Make file changesStage ChangesCommit Changes
git add filenamegit commit -m ‘…’ vi filename
Bob’s Private RepoLocated on Bob’s local machine
2) git pull
Remote repos process(multiple committers)
Public RepoLocated on Server (Github)
Private RepoLocated on your local machine
2) git pull
Bob’s Private RepoLocated on Bob’s local machine
Make file changesStage ChangesCommit Changes
git add filenamegit commit -m ‘…’ vi filename
1) git push
Public/Private Repo SetupJasonnoble/event_scheduler(on GitHub)
your-user-name/event_scheduler(on GitHub)
hosh/event_scheduler(on GitHub)
Fork
Other Public Repos
event_scheduler Local Repo
Clone
Your Public RepoProject Public Repo
stonean/event_scheduler(on GitHub)
Public Repo
Private Repo
Open source project on GitHub
• http://github.com/jasonnoble/event_scheduler– Click Fork
Fork Command
• Fork is a GitHub thing, it’s not a Git command• Clicking fork basically copies a repo on Github into your Github account• This provides a public repo that you have access to push your changes to
Your project on GitHub• http://github.com/your-user-name/event_scheduler
Clone your Repo• git clone
[email protected]:your-user-name/event_scheduler.git• cd event_scheduler• git pull
– Should say “Already up-to-date”
• This clone command adds a remote repo “origin” (explained in detail later)
• A clone is the entire history of the Git Repo– History of all changes– Log messages
Pushing/Pulling to upstreamJasonnoble/event_scheduler
your-user-name/event_scheduler
hosh/event_scheduler
Other forks
event_scheduler Local Repo
upstream origin hosh
Allowed by default
Requires permission
git push upstream master
git pull upstream master
Remotes: origin upstream hosh
Add upstream• In order to pull updates from other sources, you need
to add a remote server
Add upstream (cont.)
• git remote add upstream git://github.com/jasonnoble/event_scheduler.git
– “upstream” is whatever you want to call it– “upstream” for the repo you forked from is a
GitHub convention• git fetch upstream
– Fetches references from upstream
Create local branch
• git checkout --track -b upstream-masterupstream/master– upstream-master is what you will call it locally
Pull remote changes
• git checkout upstream-master• git pull
– pull updates from the remote
Show diffs between branches
• git show-branch
Merge branches
• git checkout master• git merge upstream-master
– Merges any changes committed to upstream-master into the master branch
• After merge, do a git push to push that merge to your public repo on GitHub
Pulling from Upstream Lab
• I will commit a change to my public repo (upstream)
• You add upstream as a remote repo• Pull from the repo to get the changes
Modify a file
• vi (or your favorite editor) AUTHORS
• Add your name
• Save the file
• Commit the change
Pushing/Pulling to OriginJasonnoble/event_scheduler
your-user-name/event_scheduler
hosh/event_scheduler
Other forks
event_scheduler Local Repo
git pull
origin
git push
Allowed by default
Requires permission
Remotes: origin upstream hosh
Git Push
• Push your changes to GitHub• git push origin master
Pull Requests
• After you push new code to your forked repo, you can request others pull your requests
• http://github.com/your-user-name/event_scheduler• Click Pull Request• Enter a quick message about what you changed• Enter receipients
– All users who have forked upstream are listed– Check users as requested
Pull Requests (cont.)