Git 入门

从零开始的项目管理

by SHUOSC & SHUKAI

为什么要版本管理

初稿.docx

第二稿.docx

第三稿.docx

……

终稿.docx

终稿(打死也不改了).docx

终稿(打死也不改了)(1).docx

什么是 Git ?

为什么用 Git ?

  • 个人开发
    • 创建项目的快照
    • 记录每个改动的目的
    • 基于多分支并行开发
  • 团队协作
    • 看到别人对代码进行的修改
    • 解决由于并行开发引起的冲突

学习 Git 你需要注意什么

  • 理解 Git 的思想和基本工作原理
  • 注重实践
  • 提问的智慧
  • 学会上网

小心线上矛盾转换为线下矛盾 线上矛盾转换为线下矛盾

xkcd 1597

Git 的安装

  • 官网下载安装
  • 使用命令行安装:
    winget install git
    sudo apt install git
    brew install git
    

Git 基础配置

  • 设置你的用户名和邮件地址,
    git config --global user.name "John Doe"
    git config --global user.email johndoe@example.com
    
  • 不加 --global 即表示对当前仓库单独配置

Git 的基础用法

获取 Git 仓库

  • 将尚未进行版本控制的本地目录转换为 Git 仓库
    git init
    
  • 从其它服务器 克隆 一个已存在的 Git 仓库
    git clone https://github.com/libgit2/libgit2
    

记录每次更新到仓库

Git 目录下文件的 4 种状态:

Git 下文件生命周期图

将文件加入暂存区

git status # 查看当前状态
git add README.md # 跟踪新文件或暂存已修改文件
git diff # 查看已暂存和未暂存的改动

删除文件

rm README.md # 删除本地文件
git rm README.md # 同时删除本地和版本库中的文件
git rm --cached README.md # 移除文件但保留在工作目录,不再跟踪

移动文件

git mv file_from file_to

等价于:

mv file_from file_to
git rm file_from
git add file_to

关于.gitignore

  • 存放在版本库根目录下的名为 .gitignore 的文件,规定忽略哪些文件
  • 语法 Git - gitignore Documentation
  • git check-ignore -v *file*:查看某个文件是否被忽略,以及匹配的规则
  • 常用语言的 .gitignore 模板:github/gitignore

提交更新

  • git commit:默认编辑器编辑提交信息
  • git commit -m "*message*"
  • -a (--all) 自动暂存所有更改的文件
  • Angular 规范

git log 查看提交历史

  • --oneline:每一个提交一行
  • --graph:显示分支结构
  • --stat:显示文件删改信息
  • -p:显示详细的修改内容

Git 分支与合并

Learn Git Branching

参考资源