不同类别的修改 (如:Bug修复和功能添加) 要尽量分开提交,以方便以后从历史记录里查找特定的修改内容。
记录Git的常见用法。
Git基本概念
Git
实现流程包括3个部分,工作区,暂存区(Stage)和版本库
- **工作区:**就是你在电脑里能看到的目录。
- **暂存区:**英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- **版本库:**工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
Git 基础命令
git
中常用的操作包括以下几个部分:
- 初始化
git
仓库 - 添加文件到版本控制
- 提交当前文件到版本管理仓库
- 回退版本
初始化仓库以及提交文件
shell
cd <folder_name>
# 初始化一个 Git 仓库,该命令会在目录中生成一个 .git 文件夹
git init
# 添加需要版本控制的文件或者文件夹
git add <file_name>
# 移除添加到stage中的一个文件(对工作区没有影响)
git rm --cached <file_name>
# 查看当前状态
git status
提交文件
文件添加完成到Stage之后,可以使用 commit 命令提交到版本库。
shell
# 文件添加完后可进行提交
git commit -m "message"
# 查看提交历史
git log
# 简洁版历史
git log --oneline
提交回退
当修改的代码出现了问题,可以对代码文件进行回退,这也是代码版本控制的重要功能。git
中的版本回退使用reset
命令。HEAD
代表当前所指向的代码版本,HEAD^
表示上一次提交
shell
# 回退到上2个版本
git reset HEAD~2
# 单独将一个文件回退一个版本
git reset HEAD^ 1.txt
# 回退到指定的提交, 后面接提交历史的hash值,可以通过 git log 查看,并不需要输入完整的hash值,只需要输入前几位就可以了
git reset 023e
# 可以在后面接 --hard 强制丢弃当前的所有未暂存的内容
git reset --hard HEAD^
分支操作
shell
# 创建一个dev分支
git checkout -b dev
# 切换到master分支
git checkout master
# 将 dev分支合并到 master分支(接上面的命令)
git merge dev
# 删除dev分支
git checkout -d dev
子模块
shell
# 查看当前已经添加的submodule
git submodule
# 对于刚刚clone 下来的主仓库使用下面的命令进行初始化
git submodule init
git submodule update
# 或者
git submodule update --init --recursive
# 删除一个子模块。删除之前通过 git submodule 命令查看 submodule_name
git deinit [sub_module_name]
git rm --cached [submodule_name]
git commit -m "remove ..."
常见配置
配置初始化用户信息
在使用
git commit
之前,还需要指定默认作为提交的用户shell# 如果是单独为某个仓库指定用户名和邮箱,把 global 参数去掉就可以了 git config --global user.name 'user_name' git config --global user.email 'email'
正常显示中文
git
默认使用中文名称的时候是以\xxx
这种形式显示的,虽然不影响我们的操作结果,但是不利于我们观察文件的变动信息,设置正常显示中文文件名的命令如下shellgit config --global core.quotepath false