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
Git and Github
Search
高見龍
May 08, 2013
Technology
5
620
Git and Github
高見龍
May 08, 2013
Tweet
Share
More Decks by 高見龍
See All by 高見龍
print("Hello, World")
eddie
1
520
為你自己學 Python - 冷知識篇
eddie
1
350
為你自己學 Python
eddie
0
680
Generative AI 年會小聚 - AI 教我寫程式
eddie
0
120
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
660
AI 時代的程式語言學習法
eddie
0
170
前端模組解放運動 - importmap
eddie
0
1.4k
Git 和 DevOps - 在混亂的流星群開發流程中找到小確幸
eddie
1
1.2k
模組化前端開發:從亂七八糟到組織有序
eddie
0
1.6k
Other Decks in Technology
See All in Technology
Webアプリケーションにオブザーバビリティを実装するRust入門ガイド
nwiizo
3
680
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
330
職種の壁を溶かして開発サイクルを高速に回す~情報透明性と職種越境から考えるAIフレンドリーな職種間連携~
daitasu
0
140
2025年にHCP Vaultを学び直して見えた景色 / Lessons and New Perspectives from Relearning HCP Vault in 2025
aeonpeople
0
230
落ちる 落ちるよ サーバーは落ちる
suehiromasatoshi
0
150
ハードウェアとソフトウェアをつなぐ全てを内製している企業の E2E テストの作り方 / How to create E2E tests for a company that builds everything connecting hardware and software in-house
bitkey
PRO
1
110
ガチな登山用デバイスからこんにちは
halka
1
230
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
140
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1k
RSCの時代にReactとフレームワークの境界を探る
uhyo
10
3.3k
【初心者向け】ローカルLLMの色々な動かし方まとめ
aratako
7
3.4k
なぜテストマネージャの視点が 必要なのか? 〜 一歩先へ進むために 〜
moritamasami
0
200
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
RailsConf 2023
tenderlove
30
1.2k
Thoughts on Productivity
jonyablonski
70
4.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Building Adaptive Systems
keathley
43
2.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Art, The Web, and Tiny UX
lynnandtonic
302
21k
KATA
mclloyd
32
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
13k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Transcript
Git and Github eddiekao@NCKU
None
Current Status 80% iOS app, 20% Ruby/Rails
Before we start..
You may create lots of files day by day..
edit them, save, edit them, and save.. x N
Backup?
Ctrl-C + Ctrl-V
"ProjectA" -> "ProjectA20130506" -> "ProjectA20130508-1" -> "ProjectA20130508-2" -> "ProjectA-bak" ->
"ProjectA-forEddie"
backup and sync on LAN
Version Control
Subversion (SVN)
but the problem is..
when network or svn server is down..
Is there any better way..?
Git
What's Git?
Version Control System (VCS)
created by Linus Torvalds for managing Linux kernel source code
in 2005
distributed
remote, and also local
Git
Git != Github
Why version control?
backup just like you can load saving data while playing
RPG game
history and evidence you know whom to blame when something
is going wrong :)
Why Git?
free
fast & smaller footprint
http://git-scm.com/book/en/Getting-Started-Git-Basics some other version control system..
http://git-scm.com/book/en/Getting-Started-Git-Basics git
just snapshots, not differences
local commit and remote push
most of the operations are local
easy to co-work with others
But..
git is easy to use, but hard to master
Install Git
on Mac: > brew install git on Ubuntu or some
linux OS: > sudo apt-get install git-core or > sudo apt-get install git
Exercise: please install git in your machine.
How to Git
configurations
.gitconfig it should locate in your home directory
set your username and email > git config --global user.name
"eddie" > git config --global user.email "
[email protected]
" list all settings > git config --list
make some useful aliases
[alias] co = checkout br = branch aa = add
--all l = "!source ~/.dotfiles/.githelper && pretty_git_log" https://github.com/kaochenlong/eddie-dotfiles
Exercise: 1. set your username and email for git. 2.
edit the ".gitconfig" and add some aliases.
.gitignore https://github.com/github/gitignore
don't be afraid of command line tools
git init
Exercise: please create a new directory and initialize for git
version control.
git clone
git clone git://github.com/kaochenlong/eddie-vim.git
Exercise: please try to copy a project from Github or
somewhere to your local machine.
working, staging, and repository
http://git-scm.com/about/staging-area
git add can add a single file or all modified
files, even a single line.
Exercise: add a new file named "hello.rb" and add to
staging area.
Exercise: after adding "hello.rb" to staging area, then try to
modify it and see what happen?
git status
Exercise: try to check if "hello.rb" is in staging area,
and then remove it from staging area.
git mv
Exercise: add "hello.rb" to staging area, and then rename it
to "world.rb".
git commit
Exercise: just commit it :)
When to make a Commit?!
commit message matters!
amend committed message
git commit --amend
Exercise: you just committed with a rubbish message, pleases amend
it to make sense for your project.
Exercise: in last commit, you forgot to add another file,
but you don't want to commit again just for this single file, please try to commit it with -- amend.
Notice: empty folder won't be committed!
if you still want to commit an empty folder, you
can put an empty “.gitkeep” file in it by convention.
git log
git log --pretty=oneline
git log --pretty=format:"%h %s"
git help log
Exercise: check your commit log
Exercise: read the help manual of “git log”, and make
your prefer log format.
Exercise: modify something in the "world.rb" then commit again.
git rm
Exercise: remove a file and then checkout it back.
git tag
tag is a milestone
Exercise: create a tag for your project
git branch
branching is very cheap
When to make a Branch?!
git checkout
Exercise: 1. create a new branch name "fruit" 2. checkout
to "fruit" branch 3. add a "banana.rb" and commit it
Exercise: please try to list all branches, including local and
remote branches.
Exercise: you accidentally delete the "world.rb" file, please try to
recover it with git commands.
Exercise: you just create a tag name “ncku”, try to
checkout to this tag after several commits.
git merge
conflict?
Exercise: 1. checkout back to "master" branch 2. merge "fruit"
to "master" 3. remove "fruit" branch if you like
git reset soft v.s. hard
Exercise: reset a file to untracked status which you just
added to staging.
Exercise: you just merged a branch, please try reset it
to back to un-merged branch.
git pull
git pull = git fetch + git merge
git push
git push origin ncku-branch
git clean remove untracked files
git stash apply, pop, list, clear
git remote
Reading References
1. Pro Git 2. ihower's blog http://ihower.tw/git/
Git Flow
http://git-scm.com/book/en/Git-Branching-Branching-Workflows
http://nvie.com/posts/a-successful-git-branching-model/
on Mac: > brew install git-flow on Ubuntu or some
linux OS: > sudo apt-get install git-flow https://github.com/nvie/gitflow/wiki/Installation
Exercise: please install git flow in your machine, and initialize
a git flow project.
init a project with git flow > git flow init
Branches Master, Develop, Feature, Release, Hotfix
add a new feature: > git flow feature start my_new_feature
when done with the new feature: > git flow feature finish my_new_feature
Exercise: your boss ask you to add a new feature
which can let user upload their photos, please try to finish this assignment in git flow.
Exercise: your boss find a bug and ask you to
fix it ASAP, please try to do this assignment in git flow.
Github
What's Github?
a git repository server
coders' facebook :)
None
make friends with other awesome coders :)
resume for coders!
Free? Price?
SSH/HTTPS/GIT
How to Github?
Exercise: register a new account on Github
without password?
SSH Key
Exercise: generate a SSH key pair in your local machine
and add the public key to Github
Exercise: create a new repository on Github
git push
Exercise: upload your project to Github
Exercise: 1. clone a project from Github 2. do some
changes 3. commit and push back to Github
Exercise: 1. create a new local branch 2. add some
change and then push this branch to Github
tag won't be pushed to repo by default
push a tag: > git push origin v2.0 push several
tags: > git push origin --tags
Exercise: create some tags for your project and upload them
to Github
git pull
Fork
Pull Request
Exercise: 1. fork a project from your classmate who is
sitting just next to you. 2. add some change and commit. 3. fire a pull request.
Github Pages
host static files for FREE
upload files via git commands
User pages kaochenlong.github.io
Project Pages gh-pages branch
custom domain name
Exercise: 1. create a github page for your account. 2.
set your domain name in CNAME if you have one.
something else?
bitbucket free private repo
git + dropbox
What's inside the .git folder?