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 In A Tree
Search
Daniel Öberg
November 13, 2011
Programming
7
360
Git In A Tree
An illustrated guide to Git
Daniel Öberg
November 13, 2011
Tweet
Share
Other Decks in Programming
See All in Programming
私はどうやって技術力を上げたのか
yusukebe
43
17k
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
360
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
1k
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
670
クラシルを支える技術と組織
rakutek
0
190
CI_CD「健康診断」のススメ。現場でのボトルネック特定から、健康診断を通じた組織的な改善手法
teamlab
PRO
0
190
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
430
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
1.9k
Serena MCPのすすめ
wadakatu
4
910
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
420
GitHub Actions × AWS OIDC連携の仕組みと経緯を理解する
ota1022
0
240
エンジニアとして高みを目指す、 利益を生み出す設計の考え方 / design-for-profit
minodriven
23
12k
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Building Adaptive Systems
keathley
43
2.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
A better future with KSS
kneath
239
17k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Embracing the Ebb and Flow
colly
88
4.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
It's Worth the Effort
3n
187
28k
RailsConf 2023
tenderlove
30
1.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Transcript
Git Sitting In A Tree An illustrated guide to Git.
Nothingness git init
Nothingness echo “Duck” > README.txt README.txt
Tell git about our duck git add README.txt Staging Area
README.txt Duck
Save git commit -m “I wrote ‘Duck’ into README.txt” Staging
Area README.txt Duck Commit commit message
Save git commit -m “I wrote ‘Donald Duck’ into README.txt”
Staging Area README.txt Duck Commit Duck
Why not directly? README.txt Duck Commit Duck
Git hates us README.txt Duck Commit Duck
Git hates us Git has opinions
“If you deny the Index [staging area], you really deny
git itself.” - Linus Torvalds
Reason Splits your code into two sections: Code that has
been reviewed for a commit Code that hasn’t
Reason Splits your code into two sections: Code in the
staging area Code not in the staging area
Example I implemented both a new feature and a bug-fix
and forgot to commit them.
I’m happily coding echo "bug-fix" >> README.txt echo "new feature"
>> README.txt cat README.txt duck bug-fix new feature
Committing the feature only git add --patched README.txt && git
commit -m “Feature added” Staging Area README.txt new feature Commit Duck new feature new feature
Seeing what’s left git diff @@ -1,2 +1,3 @@ duck
+bug-fix new feature Really, really useful
Committing that git add README.txt && git commit -m “Bug
squashed” Staging Area README.txt bug-fix Commit Duck new feature bug-fix bug-fix
Send Specific Patch Now I can freely choose to send
a patch that contains only the bug-fix to my boss (he can have the new feature on his birthday). Duck new feature bug-fix
Remove Specific Patch ‘New feature’ might have contained a serious
bug. I can the remove the new feature without touching the bug-fix. Amazing, you say. Duck new feature bug-fix
Take A Sip Of Coffee
Again
Staging Area/Index We always commit by first adding or removing
files to the Index
git add Adds files content to the staging area. Staging
Area README.txt Duck
git add --patch Adds some part (it will ask you)
of the files to the staging area. Staging Area README.txt new feature
git rm Removes all the files content from the staging
area. Staging Area README.txt Duck
git diff Shows the difference between the staging area and
the working directory. Staging Area README.txt Diff
git commit -m “msg” Commit file content in staging area
with a description/message Staging Area README.txt Commit *
Good Work
Gotchas
git add Git has a list of files. By running
git add you also append the filenames given to this list. Nasty, nasty, nasty. Lots of confusion from this feature.
git commit -a This is the reason for tracking the
files. By adding an -a you tell git to add all its tracked files file contents to the staging area and then commit it all.
And A Lie
Staging Area What we call a staging area, Git officially
calls the Index.
Thanks for listening
United Lambdas Daniel Öberg
[email protected]