来源:我的博客站 OceanicKang |《Git 基础教程》
Git的设计让使用者觉得自己比想象中的笨。 —— Andrew Morton(Linux核心开发者)
若没有安装 Git,请看《Windows 下配置 Git 环境变量》
初次使用 Git 前的配置
在命令行输入以下命令:
> git config --global user.name "用户名"
> git config --global user.email "邮箱"
这个用户名和邮箱将是你未来使用 Git 进行项目版本管理的身份标识
用户名和邮箱不要使用中文
理论基础
Git 记录的是什么?
用过 SVN 的应该都知道,SVN 记录的是每一次版本变动的内容
而 Git 则是将每个版本独立保存
三棵树:工作区域、暂存区域和 Git 仓库
1、Working:工作区域,一般是项目所存放的目录
2、Stage:暂存区域,暂存所有改动准备提交
3、Repository:Git 仓库,最终存放项目的位置,并且携带版本编号
Git 的工作流程
1、在工作目录中添加、修改文件
2、将需要进行版本管理的文件放入暂存区域
3、将暂存区域的文件提交到 Git 仓库
Git 管理的文件有三种状态
-
已修改(modified)
-
已暂存(staged)
-
已提交(committed)
Git 命令的简单流程
简单使用
创建项目文件夹,并初始化仓库
> git init
创建了 .git
文件夹(默认隐藏)
添加
README.md
文件,并提交到 Git 仓库
> git add ./README.md
> git commit -m "add a readme file"
基础操作
查看状态
> git status
添加
LICENSE
文件后
将
LICENSE
加入暂存区
将暂存区的最新记录撤回
将
LICENSE
提交到仓库,并修改LICENSE
文件
git checkout -- <file>
:将仓库中的文件覆盖回本地(慎重)
修改一次
LICENSE
并加入暂存区,后再修改一次但不加入暂存区
查看历史
> git log
> git log --all --oneline --graph # 图形化简要显示所有log(包括分支)
回到之前版本
> git reset HEAD~
移动 HEAD 的指向,将其指向上一个快照
reset 命令说明
1、git reset --mixed HEAD~
:等于 git reset HEAD~
2、git reset --soft HEAD~
:移动 HEAD 的指向,将其指向上一个快照。并将 HEAD 移动前指向的快照回滚到暂存区域
3、git reset --hard HEAD~
:移动 HEAD 的指向,将其指向上一个快照。将 HEAD 移动后指向的快照回滚到工作目录
指定 ID 回滚
> git reset <版本快照的ID>
回滚个别文件
> git reset <版本快照> <文件名 or 路径>
版本对比
比较暂存区域与工作目录
> git diff
比较两个历史快照
> git diff <快照ID1> <快照ID2>
比较当前工作目录和 Git 仓库中的快照
> git diff <快照ID>
比较暂存区域和 Git 仓库快照
> git diff --cached <快照ID>
修改最近提交
1、场景一:版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add)
2、场景二:版本刚一提交(commit)到仓库,突然想起版本说明写得不够全面
执行带 --amend
选项的 commit
提交命令,Git 就会“更正”最近的一次提交
> git commit --amend -m "这是修改的说明"
删除文件
> git rm <文件名>
该命令删除的只是工作目录和暂存区域的文件,也就是取消跟踪,在下此提交时不纳入版本管理
> git rm -f <文件名> # 暴力删除
> git rm --cached <文件名> # 保留工作目录
重命名文件
> git mv <旧文件名> <新文件名>
Git 分支
克隆一份全新的目录以同样拥有 5 个分支来说,SVN 是同时复制 5 个版本的文件,也就是说重复 5 次同样的动作。
而 Git 只是获取文件的每个版本的元素,然后只载入主要的分支(master)
创建
feature
分支
> git branch feature
切换到
feature
分支
> git checkout feature
> git checkout -b feature2 # 自动创建分支并切换
将指定分支合并到当前分支
> git checkout master # 切换到主分支
> git merge feature # 将 feature 分支合并到 master 分支
删除
feature2
分支
> git branch -d feature2
常见实际开发中的分支结构
【完】附一份《Git 文档笔记》