01|课程综述

Git官网
GitHub
GitLab
SVN

版本管理的演变

  • VCS出现前
    • 用目录拷贝区别不同版本
    • 公共文件容易被覆盖
    • 成员沟通成本高,代码集成效率低下
  • 集中式VCS——CVS/SVN
    • image.png
    • 有集中的版本管理服务器
    • 具备文件版本管理和分支管理能力
    • 集成效率明显提高
    • 客户端必须时刻和服务器相连
  • 分布式VCS
    • image.png
    • 服务端和客户端都有完整的版本库
    • 脱离服务器,客户端照样可以管理版本
    • 查看历史和版本比较等多种操作,都不需要访问服务器,比集中式VCS更能提高版本管理效率

Git的特点

  • 最优的存储能力
  • 非凡的性能
  • 开源
  • 容易备份
  • 支持离线操作
  • 容易定制工作流程

02|安装Git

Git 官方文档地址
macOS 平台 Git 下载地址
Windows 平台 Git 下载地址
Linux 平台 Git 下载地址

03|最小配置

配置user信息(user.name和uer.email)

git config --global user.name 'your_name'<br />git config --global user.email 'your_email@domain.com'

config的三个作用域

  • 优先级:local>global>system

image.png
image.png

Test

image.png
image.png

04|创建仓库并配置local用户信息

image.png

05|工作区和缓存

image.png

git add:添加到暂存区

git add -u:将文件的修改、文件的删除,添加到暂存区。 只能操作跟踪过的文件
git add .:将文件的修改,文件的新建,添加到暂存区。
git add -A(git add -all):将文件的修改,文件的删除,文件的新建,文件的替换,添加到暂存区。

mv:文件重命名

mv readme readme.md

cp:文件拷贝

cp filename destination_folder:拷贝文件
cp -r directory_name destination_folder:拷贝文件夹

image.png
image.png

image.png

image.png

image.png

06|文件重命名

git mv

git mv readme readme.md

07|git log 查看版本演变历史

git log

  1. git log --all 查看所有分支的历史
  2. git log --all --graph 查看图形化的 log 地址
  3. git log --oneline 查看单行的简洁历史。
  4. git log --oneline -n4 查看最近的四条简洁历史。
  5. git log --oneline --all -n4 --graph 查看所有分支最近 4 条单行的图形化历史。
  6. git help --web log 跳转到git log 的帮助文档网页

08|gitk图形界面工具查看版本历史

gitk

gitk 直接打开gitk图形界面
gitk filename 查看单个文件的修改历史
image.png

09|.git目录

.git 文件目录 • COMMIT_EDITMSG • config 当前 git 的配置文件 • description (仓库的描述信息文件) • HEAD (指向当前所在的分支),例如当前在 develop 分支,实际指向地址是 refs/heads/develop • hooks [文件夹] • index • info [文件夹] • logs [文件夹] • objects [文件夹] (存放所有的 git 对象,对象哈希值前 2 位作为文件夹名称,后 38 位作为对象文件名, 可通过 git cat-file -p 命令,拼接文件夹名称+文件名查看) • ORIG_HEAD • refs [文件夹]
• heads (存放当前项目的所有分支,包含所有的分支文件,文件存储了分支指向的指纹信息) • tags (存放的当前项目的所有标签,又叫做里程碑,或者版本发布用等记录重要版本.文件也存储了tag的指纹信息)

git cat-file

  • git cat-file -t 命令 , 查看 git 对象的类型
  • git cat-file -p 命令, 查看 git 对象的内容
  • git cat-file -s 命令, 查看 git 对象的大小

    cat

  • cat filename,功能:用来显示文件。 例如 cat text.md 显示 text.md 文件的内容

    ls -al

  • ls -al 命令, 表示列出当前目录下的所有文件(包括隐藏文件)

10|commit、tree、blob三个对象之间的关系

一个commit对应1个tree tree可以理解为一个文件夹

image.png

11|小练习:tree的个数

12|分离头指针情况下需要注意的问题

分离头指针(detached head):如果git给出该提示,说明正工作于没有分支的情况下
应用场景:在做尝试或者测试的时候可以分离头指针,当尝试完毕没有用的时候可以随时丢弃,但是如果觉得尝试有用,那么可以新建一个分支,使用 git branch <新分支的名称> commitId
git checkout commitId:会出现分离头指针的情况,这种情况下比较危险,因为这个时候你提交的代码没有和分支对应起来,当切换到其他分支的时候(比如master分支),容易丢失代码;

13|理解HEAD和branch

Git常见命令速查表

Git三剑客-Git常见命令速查表.pdf
github-git-cheat-sheet.pdf
git-cheat-sheet.pdf

附件