Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Learn Git
Search
Lin Zhang
May 06, 2013
Programming
0
120
Learn Git
Git introduction, commands, tips and Github.
Lin Zhang
May 06, 2013
Tweet
Share
Other Decks in Programming
See All in Programming
複数プロダクトの技術改善・クラウド移行に向き合うチームのフレキシブルなペア・モブプログラミングの実践 / Flexible Pair Programming And Mob Programming
honyanya
0
170
AWS Lambda Web Adapterを活用する新しいサーバーレスの実装パターン
tmokmss
6
5.6k
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
240
[KR] Server Driven Compose With Firebase
skydoves
2
160
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
6
620
What is TDD?
urakawa_jinsei
1
200
推しの夫に恋のGPS「ときメーター」#M5Stack #IoT #M5JPTour2024
riyu
0
220
perl for shell, awk and sed programmers
mackee
0
240
Rails 8 Frontend: 10 commandments & 7 deadly sins in 2025
yshmarov
1
600
DevFest Android in Korea 2024 - 안드로이드의 문단속 : 앱을 지키는 암호화 이야기
mdb1217
1
130
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
0
140
2024-10-02 dev2next - Application Observability like you've never heard before
jonatan_ivanov
0
160
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.1k
Happy Clients
brianwarren
97
6.7k
Embracing the Ebb and Flow
colly
83
4.4k
The Cost Of JavaScript in 2023
addyosmani
43
5.8k
Six Lessons from altMBA
skipperchong
26
3.4k
Faster Mobile Websites
deanohume
304
30k
Automating Front-end Workflow
addyosmani
1365
200k
Practical Orchestrator
shlominoach
185
10k
Producing Creativity
orderedlist
PRO
341
39k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
44
2k
Building an army of robots
kneath
302
42k
Music & Morning Musume
bryan
46
6.1k
Transcript
Learn Git Lin Zhang - @marshluca 2013.5.4 13年5月4⽇日星期六
Agenda • Git Introduction • Git Commands • Git Tips
• Github 13年5月4⽇日星期六
Git Introduction • Distributed Version Control System • Linux Torvalds
created for Linux Kernel • 2005.4 released 13年5月4⽇日星期六
谁在⽤用Git 13年5月4⽇日星期六
My Version Control System • 2009 Subversion (co, ci, up)
• 2011 Git (repo on private server) • 2012 Github, Bitbucket (pull request) 13年5月4⽇日星期六
Subversion-Style Workflow 13年5月4⽇日星期六
Integration Manager Workflow 13年5月4⽇日星期六
13年5月4⽇日星期六
脱离SVN苦海 git svn clone -‐-‐stdlayout -‐-‐no-‐metadata \ -‐A users.txt
svn://hostname/path dest_dir-‐tmp http://stackoverflow.com/questions/79165/how-‐to-‐migrate-‐svn-‐ with-‐history-‐to-‐a-‐new-‐git-‐repository 13年5月4⽇日星期六
完全离线开发 13年5月4⽇日星期六
四种状态 13年5月4⽇日星期六
Git Commands 13年5月4⽇日星期六
初试⽜牛⼑刀 • mkdir -p repo && cd repo • git
init • touch README • git add README • git status • git commit -m ‘First Commit’ 13年5月4⽇日星期六
分⽀支合并 • git branch my-branch • git checkout my-branch •
git rebase develop • git merge my-branch 13年5月4⽇日星期六
远程交互 • git remote add upstream <git-repo-url> • git fetch
upstream • git pull upstream master • git push origin master 13年5月4⽇日星期六
还有很多... • git mv file • git rm file •
git log • git diff • git reset --hard HEAD • git tag -a v1.0 -m ‘tagging v1.0’ 13年5月4⽇日星期六
Git Tips 13年5月4⽇日星期六
#Tip1 Make Alias In Config 13年5月4⽇日星期六
#Tip2 Manage Remote Branches • git checkout --track origin/branch •
git branch -D local-branch • git push origin local-branch:remote-branch • git push origin :remote-branch 13年5月4⽇日星期六
#Tip3 Amend on commit • with reset • git reset
HEAD~ • update • git commit -am ‘some message’ • with amend • update • git commit -a --amend 13年5月4⽇日星期六
#Tip4 Stash Local Changes Before Merge/Patch • git stash •
git stash save ‘your message’ • git stash list • git stash pop • git stash apply stash@{0} • git stash drop stash@{0} • git stash clear 13年5月4⽇日星期六
#Tip5 pick existed commits git cherry-pick master~3 git cherry-pick master~4
master~2 13年5月4⽇日星期六
#Tip6 Push之前可以做的事 • git reset HEAD~2 • --soft • --hard
• git amend -a --amend • git rebase -i HEAD~3 13年5月4⽇日星期六
#Tip7 Merge with --no-ff fast-forward no fast-forward 13年5月4⽇日星期六
#Tip8 pull with rebase 13年5月4⽇日星期六
D---E master / A---B---C---F origin/master D--------E / \ A---B---C---F----G master,
origin/master git pull origin master A---B---C---F---D'---E' master, origin/master git pull --rebase origin master 13年5月4⽇日星期六
#Tip9 Recover your changes • git revert HEAD~ • git
revert HEAD~1 --no-edit --mainline 2 13年5月4⽇日星期六
#Tip10 冲突了怎么办? • 导致冲突的元凶 merge, patch • 导致冲突的直接命令 • merge,
pull, rebase, cherry-pick 13年5月4⽇日星期六
冲突类型及解决 • 逻辑冲突 • auto merged/patched • ⽂文件树冲突 • git
mergetool • 内容冲突 • merge/patch • rebase 13年5月4⽇日星期六
什么是⼈人⾁肉合并 >.< • 干掉7个>,< • 卷⼟土重来 • git reset --hard
HEAD • git merge --abort • git rebase --abort 13年5月4⽇日星期六
如何避免⼤大⾯面积冲突 13年5月4⽇日星期六
Commit Guidelines • Commit related changes • Commit small and
often • Dont commit half-done work • Test code before commit • Write good commit message 13年5月4⽇日星期六
Branch Guidelines • Keep master branch always deployable • Develop
features on new local branches • Stash you local changes when switch to another branch 13年5月4⽇日星期六
Merge Guidelines • Merge more often and earyly • Merge
with rebase • Test code before merge 13年5月4⽇日星期六
Rebase Guidelines • Never rebase your master branch • Never
rebase a published branch • Rebase your feature branches 13年5月4⽇日星期六
Social Coding on Github 13年5月4⽇日星期六
Follow && Watch 13年5月4⽇日星期六
Repositories 13年5月4⽇日星期六
Fork, Pull Request 13年5月4⽇日星期六
Github Issues Talk is cheap, show me the code! 13年5月4⽇日星期六
Github Pages 13年5月4⽇日星期六
Recommend tools 13年5月4⽇日星期六
Gitx 13年5月4⽇日星期六
tig 13年5月4⽇日星期六
git flow 13年5月4⽇日星期六
feature, release, hotfix • git flow init -d • git
flow feature start feature-x • git flow feature rebase • git flow feature finish feature-x 13年5月4⽇日星期六
References • http://progit.org • http://book.git-scm.com • http://gitref.org • http://thkoch2001.github.io/whygitisbetter/ •
http://ihower.tw/blog/archives/category/git 13年5月4⽇日星期六
Thanks ! Q/A 13年5月4⽇日星期六