Skip to content

记录Git的常见用法。

Git基本概念

img

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
不同类别的修改 (如:Bug修复和功能添加) 要尽量分开提交,以方便以后从历史记录里查找特定的修改内容。
> commit 的内容遵循以下格式: > 第1行:提交修改内容的摘要 > 第2行:空行 > 第3行以后:修改的理由

提交回退

当修改的代码出现了问题,可以对代码文件进行回退,这也是代码版本控制的重要功能。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这种形式显示的,虽然不影响我们的操作结果,但是不利于我们观察文件的变动信息,设置正常显示中文文件名的命令如下

    shell
    git config --global core.quotepath false

最新更新: