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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
李甘
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
Riverpod3.xで実現する実践的UI実装
fumiyasac0921
2
350
2026年はチャンキングを極める!
shibuiwilliam
8
1.7k
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
290
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
72k
AWS Devops Agent ~ 自動調査とSlack統合をやってみた! ~
kubomasataka
2
270
AI時代、1年目エンジニアの悩み
jin4
1
130
Azure SQL Databaseでベクター検索を活用しよう
nakasho
0
130
EventBridge API Destination × AgentCore Runtimeで実現するLambdaレスなイベント駆動エージェント
har1101
7
280
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
「AIでできますか?」から「Agentを作ってみました」へ ~「理論上わかる」と「やってみる」の隔たりを埋める方法
applism118
13
8.5k
最速で価値を出すための プロダクトエンジニアのツッコミ術
kaacun
1
410
Oracle Cloud Infrastructure:2026年1月度サービス・アップデート
oracle4engineer
PRO
0
190
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
190
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
100
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
260
Joys of Absence: A Defence of Solitary Play
codingconduct
1
280
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
190
Prompt Engineering for Job Search
mfonobong
0
150
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.4k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
750
How to Talk to Developers About Accessibility
jct
2
120
How to make the Groovebox
asonas
2
1.9k
Context Engineering - Making Every Token Count
addyosmani
9
640
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