主要介绍 Git 的常用操作
首先本地 Git 有三个分区:working directory,stage/index area,commit history
working directory:工作目录
stage/index area:暂存区,git add命令会把working directory中的修改添加到暂存区
commit history:git commit命令会把暂存区的内容提交到该分区。每个commit都有一个唯一的 Hash 值
三者的关系如下图所示:

# 初始化 git 项目git init# working dir -> stage areagit add .# stage area -> commit historygit commit -m "xxxx"# 查看工作区提交情况git status# 查看 git commit 提交记录git log# 创建新分支git branch xxx# 切换新分支git checkout xxx# 创建并切换新分支git checkout -b xxx# 将 commit history 区的代码恢复到 stagegit reset
把stage中的修改还原到working dir中
xxxxxxxxxx# 恢复某一个文件git checkout [fileName]# 恢复所有文件git checkout .
把commit history区的历史提交还原到working dir中
xxxxxxxxxxgit checkout HEAD .
将commit history区的文件还原到stage区
xxxxxxxxxxgit reset [fileName]git reset .
撤销git commit
xgit reset --soft HEAD^# 等价git reset --soft HEAD~1# 撤销两次 git commitgit reset --soft HEAD~2
# 如果此时我们同时需要撤销远程的提交记录# -f 表示强制推送到远程git push -f下面介绍一下几个参数
--mixed:不删除工作空间改动代码,撤销commit,并且撤销git add .操作
--soft:不删除工作空间改动代码,撤销commit,不撤销git add .
--hard :删除工作空间改动代码,撤销commit,撤销git add .
修改git commit -m " "注释
xxxxxxxxxxgit commit --amend
合并相同的git commit
xxxxxxxxxx# 选择需要合并 git commit 最早的一个 id 的前一个 (因为不包括本 id 的 git commit)git rebase -i [git logID]当前我们只要知道pick和squash这两个命令即可
pick的意思是要会执行这个 commitsquash的意思是这个 commit 会被合并到前一个commit
撤销git rabase合并
xxxxxxxxxx# 查看本地记录git reflog
git reset --hard [id]
# 同时修改远程的提交git push -f