$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Learn git
Search
李甘
February 21, 2013
Technology
1
310
Learn git
git初学简要教程
李甘
February 21, 2013
Tweet
Share
More Decks by 李甘
See All by 李甘
How we make tests
flypiggy
0
85
Other Decks in Technology
See All in Technology
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
140
AIBuildersDay_track_A_iidaxs
iidaxs
3
440
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
180
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
440
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
2
210
エンジニアリングをやめたくないので問い続ける
estie
2
1.2k
IAMユーザーゼロの運用は果たして可能なのか
yama3133
2
510
「図面」から「法則」へ 〜メタ視点で読み解く現代のソフトウェアアーキテクチャ〜
scova0731
0
410
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
3.6k
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
140
20251219 OpenIDファウンデーション・ジャパン紹介 / OpenID Foundation Japan Intro
oidfj
0
310
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
1.5k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
KATA
mclloyd
PRO
33
15k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Design in an AI World
tapps
0
91
How to Ace a Technical Interview
jacobian
281
24k
Transcript
learn git git基础教学 ! !
[email protected]
! (⼤大部分内容基于《Pro Git》整理⽽而成)
• Git 简介 • Git 101 • Git work-flow •
Resources
• Git简史 • Git设计原则 • Git特点 • Git原理 Git简介
Git 简史 • 出现于2005年,为了取 代BitKeeper⽽而开发 • 最初⽤用于linux内核代码 管理 • 强⼤大的社区⽀支持
设计原则 • 速度 • 简单的设计 • 对⾮非线性开发模式的强⼒力⽀支持(允许上千个并 ⾏行开发的分⽀支) • 完全分布式
• 有能⼒力⾼高效管理类似 Linux 内核⼀一样的超⼤大规 模项⺫⽬目(速度和数据量)
Git 特点 • ⼏几乎所有操作都在本地执⾏行 • 每⼀一份clone都是⼀一个完整的版本库 • 时刻保持数据的完整性 • 不依赖中⼼心服务器
• 更好的多⼈人协作 • 更多的惊喜等待发现
Git原理 • Git直接记录快照 • ⽽而⾮非差异⽐比较 • 每次提交⽣生成⼀一个 新的快照
Git原理 • 每个commit包含提交 的详细信息 (parent,tree,author等) • tree对象中包含该次提 交的具体blob对象 • blob对象中包含着提交
的具体内容 • ⼏几种对象结合在⼀一起 构成git的⽂文件系统
Git原理 • 每⼀一个分⽀支就是⼀一个 指向快照的指针 • 新建⼀一个名为testing的 分⽀支于是就有了⼀一个 新的指针
Git原理 • HEAD指针指向我们当 前的⼯工作分⽀支 • 当我切换到testing分⽀支 时,HEAD也指向了 testing当前的快照
Git原理 • 在testing分⽀支产⽣生了⼀一 次提交后,分⽀支和HEAD 指针⼀一起指向了新的 快照 • 切换回master分⽀支,指 针仍然指向之前的快 照
Git原理 • 在master分⽀支上再进⾏行 ⼀一次提交. • “分⽀支”就这样产⽣生了
Git 101 • git config • git clone/remote • git
add/commit • git status • git log • ...
git config • 使⽤用git第⼀一件事,设置你的⽤用户信息 • • git config --global 全局信息
• 针对每个git仓库设置独⽴立的config(不加--global) • 编辑器,diff⼯工具,color设置等等 • git 配置 $ git config --global user.name "Gavin"! $ git config --global user.email
[email protected]
git clone/remote • git clone • 原始仓库默认被添加为remote仓库(origin) • git remote
• git remote add/rm/rename … • upstream
git add/commit • git ⼯工作区域 • ⼯工作区 • 暂存区 •
版本库 • git add增加⽂文件到暂存区 • git commit 提交版本库 • 每次提交内容以⼀一句话 能说清为佳 git 不同⽂文件区⽰示意
git status • 使⽤用git status查看git状态时, 可能会看到类似上图的状态 • 未追踪 • 未变化
• 修改过的 • 已经保存的 git 不同⽂文件状态
git log • git log 查看提交历史 • 本地可以查看所有提交历史 • git
log -p 展开每次提交内容差异 • git log --graph(try it) • git log --pretty 以各种格式显⽰示log • 每个版本⽂文件清单,指定⽇日期,作者等(想得到的基本 都能做到)
git reset • git reset 撤销某次提交 • --mixed 默认⽅方式,reset暂存区的提交 •
--hard 完全还原版本,默认到HEAD • 可以使⽤用git reset --hard HEAD~回退到上⼀一版本(~ 代表parent
git branch,merge • git branch hotfix • 创建分⽀支 • -d删除分⽀支
• git merge hotfix(当前分⽀支是master) • fast-forward合并
git branch,merge
git checkout • checkout某个版本,⽂文件,分⽀支 • git checkout testing 签出testing分⽀支 •
git checkout f6611 签出f6611的版本 • git checkout 123 从仓库中取出123这个⽂文件(会还原 ⼯工作区的该⽂文件)
git stash • 当前⼯工作区下有修改的⽂文件⼜又不想提交 • 需要临时切换到另⼀一个分⽀支修改⼀一些代码 • git stash 将当前未提交的⽂文件临时保存起来
• git stash pop 取出并删除最近的stash • git stash list && git stash apply --index 取出该编号的 stash
git与远程仓库 • git fetch origin • git pull origin •
git fetch origin + git merge origin/master • git push 推送到远程仓库
git pull is evil! • git pull —rebase • git
pull —ff-only • git fetch
更多的git • 还有很多没有介绍... • 很多⽅方便的功能,如 git blame • 重要的功能,如 git
rebase ,git submodule, git revert
Git work-flow • 集中式⼯工作流(svn) • 集成管理员式⼯工作流(github flow)
集中式⼯工作流 • 以某⼀一个仓库为主仓库 • ⼤大家都向主仓库推送代码/获 取更新 • 参考:subversion
集成管理员⼯工作流 • 依然有⼀一个主仓库 • 只有仓库的管理员(拥有者)拥有 推送权限 • 开发者从主仓库获取更新,在⾃自 ⼰己的仓库中进⾏行修改 •
向管理员发出邀请,请求拉取⾃自 ⼰己的仓库中的更新 • 参考: github
git-flow
Resources
Toolkits • SourceTree • tig • Vim-addons • vim-gitgutter •
vim-fugitive
学习资源 • Github • 动⼿手就是最好的学习 • pro git • 开源免费电⼦子书
• Learn Git Branching • ⼀一款在线学习git的app