git102
DESCRIPTION
Intro to Git slide deck.Covers Forking, pushing and pulling to Github, Pull requestsTRANSCRIPT
![Page 1: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/1.jpg)
Our project on GitHub
• http://github.com/jasonnoble/event_scheduler– Click Fork
![Page 2: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/2.jpg)
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
![Page 3: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/3.jpg)
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
![Page 4: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/4.jpg)
Your project on GitHub• http://github.com/your-user-name/event_scheduler
![Page 5: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/5.jpg)
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
![Page 6: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/6.jpg)
Modify a file
• vi (or your favorite editor) AUTHORS
• Add your name
• Save the file
![Page 7: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/7.jpg)
Git diff• git diff
• Shows what has changed since your last commit
![Page 8: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/8.jpg)
Git Status
• Shows the status of your git repo / working directory
• git status
![Page 9: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/9.jpg)
Git add
• Stages files to be committed
• git add AUTHORS
![Page 10: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/10.jpg)
Git Commit
• Commit your changes• git commit -v
• Options:– a Add all known files– v Verbose (show diff in editor)– m Command line commit message
![Page 11: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/11.jpg)
Git commit (cont.)
![Page 12: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/12.jpg)
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
![Page 13: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/13.jpg)
Git Push
• Push your changes to GitHub• git push origin master
![Page 14: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/14.jpg)
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
![Page 15: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/15.jpg)
Add upstream• In order to pull updates from other sources, you need
to add a remote server
![Page 16: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/16.jpg)
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
![Page 17: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/17.jpg)
Create local branch
• git checkout --track -b upstream-masterupstream/master– upstream-master is what you will call it locally
![Page 18: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/18.jpg)
Pull remote changes
• git checkout upstream-master• git pull
– pull updates from the remote
![Page 19: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/19.jpg)
Show diffs between branches
• git show-branch
![Page 20: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/20.jpg)
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
![Page 21: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/21.jpg)
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
![Page 22: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/22.jpg)
Pushing/Pulling to other remote repos
Jasonnoble/event_scheduler
your-user-name/event_scheduler
hosh/event_scheduler
Other forks
event_scheduler Local Repo
upstream origin hosh
git push hosh master
git pull hosh master
Allowed by default
Requires permission
Remotes: origin upstream hosh
![Page 23: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/23.jpg)
Practice makes perfect
• Find a pair to work with• Add their remote repo
– git remote add _____ git://github…..
• Fetch refs– git fetch _______
• Create Branch– git checkout --track
-b ______ _____/master
![Page 24: Git102](https://reader035.vdocuments.net/reader035/viewer/2022062405/554f63f4b4c9058a148b49bb/html5/thumbnails/24.jpg)
Practice makes perfect (Cont.)
• Make some changes, push them to origin/master and have your pair pull those changes
• Switch roles and you pull changes they’ve pushed
• Play with the “pull request” feature of GitHub