文章目录
01 Git基础概念
1.1 三个区域
使用Git管理的项目,拥有三个区域:
- 工作区:处理工作的区域。
- 暂存区:已完成的工作的临时存放区域,等待被提交。
- Git仓库:最终的存放区域。
1.2 三种状态
- 已修改 modified:表示修改了文件,但还没将修改的结果放到暂存区。
- 已暂存 staged:表示对已修改文件的当前版本做了标记,使之包含在下次提交的列表中。
- 已提交 committed:表示文件已经安全地保存在本地的Git仓库中。
1.3 基本的Git工作流程
- 在工作区中修改文件
- 将你想要下次提交的更改进行暂存
- 提交更新,找到暂存区的文件,将其永久性存储到Git仓库
02 安装配置Git
2.1 安装
在Windows中下载并安装Git,官网下载链接
2.2 配置用户
安装完Git之后,要做的第一件事就是设置自己的用户名和邮件地址。因为通过Git对项目进行版本管理的时候,Git需要使用这些基本信息,来记录是谁对项目进行了操作:
# 配置用户信息
git config --global user.name '你的名字'
git config --global user.email '你绑定的邮箱'
注意:
(1)如果使用了--global
选项,那么该命令只需要运行一次,即可永久生效。
(2)通过上述命令配置的信息会写入到C:/Users/用户名文件夹/.gitconfig
文件中。这个文件是 Git 的全局配置文件,配置一次即可永久生效。所以可以使用记事本打开此文件,从而查看自己曾经对 Git 做了哪些全局性的配置。
除了使用记事本查看全局的配置信息之外,还可以运行如下的终端命令,快速查看Git的全局配置信息:
# 查看所有的全局配置项
git config --list --global
# 查看指定的全局配置项
git config user.name
git config user.email
可以使用 git help <verb>
命令,无需联网即可在浏览器中打开帮助手册,例如:
# 要想打开git config命令的帮助手册
git help config
如果不想查看完整的手册,那么可以用 -h 选项获得更简明的“help”输出:
# 想要获取git config 命令的快速参考
git config -h
2.3 配置SSH
官方文档点这里:Git-生成-SSH-公钥
# 生成 ssh 公钥 (如果不设置密码,三个连续回车)
$ ssh-keygen -t rsa -C "邮箱地址"
# 之后会得到了两个文件:id_rsa 和 id_rsa.pub
# 将 id_rsa.pub 里的内容 复制到 SSH Keys
# 测试 ssh 是否生效
$ ssh -T git@[代码库地址]
03 Git常用的基本命令
# 初始化工程
git init
# 查看目前的状态(untracked未跟踪 staged暂存 modified已修改 unmodified未修改
git status
# 将工作区的所有代码添加到暂存区(.代表all)
git add .
# 将工作区的指定文件添加到暂存区(添加多个文件,以空格隔开)
git add 文件名
# 提交文件到仓库,-m "提交内容的说明")
git commit -m "提交内容的说明"
# 查看版本库中有哪些版本
git log
# 查看差异化不同
git diff
# 创建 并切换 到 新创建的分支
git checkout -b 分支名字
# 查看所有分支
git branch
# 删除分支
git branch -d 分支名字
# 推送至远程仓库(括号中的内容可省略)
git push origin 本地分支名字(:远程分支名字)
04 Git分支与合并操作
git branch
:查看所有分支;git branch -v
:查看分支详情;git checkout 分支名
:切换到指定的分支git checkout -b 分支名
:创建并切换到新创建的分支git branch -m 旧分支名 新分支名
: 重命名指定分支名git branch -d 分支名
:删除指定的分支(该分支没有新的提交记录)git branch -D 分支名
:强制删除指定的分支git branch 分支名 commitId
:若要恢复有过提交记录的分支,需要用git reflog
查找该分支指向的commitId
,再根据commitId
创建新的分支git merge 分支名
:将指定的分支合并到当前分支(若遇到合并冲突,待解决冲突后使用git add
表示冲突已解决,再用git commit
进行提交)git stash
:将当前工作暂存git stash list
:列出所有的暂存状态git stash apply
:从暂存区之中进行恢复git stash drop
:从暂存区之中删除git stash pop
:从暂存区中恢复且将stash内容删除
注意:删除某分支前需要先切换到其他分支才能对其进行删除操作!
05 Git撤销与回滚操作
开发过程中会遇到提交代码后需要撤回的行为,解决方案如下:
5.1 本地仓库 - 撤销
对 未执行 git push
前的所有操作 进行撤销:
- 文件被修改,但还未执行
git add
操作
# 撤销 指定 的文件
git checkout 文件名
# 撤销 全部 文件
git checkout .
- 执行了
git add
操作,还没执行git commit
,即 文件已经添加到暂存区
# 取消 指定文件 的暂存
# 方法 1
git reset HEAD 文件名
# 方法 2
git rm –-cached 文件名
- 修改的文件已经执行了
git add
和git commit
操作后
# 回退 到 上一个版本
git reset HEAD~1
# 回退 到 指定的某个版本
git reset 版本号
5.2 远程仓库 - 回滚
已经执行了git push
操作,即已推送到远程仓中,对其进行回滚(回滚有风险,请提前做好备份,谨慎操作,回滚之后):
- 回滚 指定文件 到 指定版本
# 查看指定文件的历史版本 和 commitID
$ git log 文件名
# 回滚到指定 commitID
$ git checkout commitID 文件名
# 推送至远程仓库(强制)
git push -u origin 分支名 -f
- 回滚 到 上一个版本
# 方法 1 使用reset(将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录)
git reset --hard HEAD^
# 方法 2 使用revert (放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在)
git revert HEAD
# 推送至远程仓库(强制)
git push -u origin 分支名 -f
- 回滚 到 某次提交
# 找到要回滚的 commitID
git log
# 按照 指定的commitID 进行回滚
# 方法 1
git revert commitID
# 方法 2
git reset --hard commitID
# 推送至远程仓库(强制)
git push -u origin 分支名 -f
- 回滚 到 前几次提交之前
# 回退到 前num次 提交之前
git reset --hard HEAD~num
# eg.回滚到前5次提交之前
git reset --hard HEAD~5
# 推送至远程仓库(强制)
git push -u origin 分支名 -f