1.Git安装
- 安装git 并设置用户名和邮箱
Git官网下载–下载对应操作系统版本
本文在Winows下在Git Bash中使用
# 配置全局 Git 仓库的 用户名 和 email
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@example.com"
2.创建版本库
在合适的位置创建空文件夹,在文件夹下使用git init
即可使当前文件夹初始化为仓库
$ cd d:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in D:/learngit/.git/
# 表示注释
# cd: change directory 改变目录
# mkdir 创建空文件夹
# pwd 用于显示当前目录
$ ls -ah # 显示当前目录下的文件
./ ../ .git/
- 初始化一个空文件夹使其成为仓库
3.提交文件到仓库
首先需要在手动创建一个文本文件readme.txt
三个概念
- 工作区 (Working Directory): 自己电脑里能看到的目录
- 版本库 (Repository): 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库
- 暂存区 (stage): Git 的版本库里存了很多东西,其中重要的就是称为 stage(或者叫index)的暂存区.
将文件提交到仓库分两步
$ git add <filename> //将工作区文件提交到暂存区
$ git add commit -m "提交描述" //将暂存区文件提交到仓库
总结
- 将文件提交到仓库首先需要提交到暂存区,再提交到版本库
4.查看各个区的不同
$ git diff commit_id_1 commit_id_2 用来比较2个commit之间区别
$ git diff 检查的是工作区与暂存区的差异
$ git diff --staged 暂存与仓库的差异
$ git diff HEAD -- file,比较的是工作区中的文件与版本库中文件的差异。
5.查看仓库状态
$ git status 是否有已经修改但还没有提交的文件
6.查看提交记录
$ git log
$ git log --oneline # 简化日志信息
$ git log --pretty=oneline #简化日志信息
使用git log
查看后,退出输入q
7.回到过去
回到过去有两种方式
- 直接回到过去的版本
$ git reset --hard HEAD^ //几个^表示之前记录的几个版本,^太多了也可以用~数字 也可以使用版本号
- 重新提交一次过去的版本
$ git revert HEAD^ //同1将上个版本提交一次
8.回到未来
第1种方式回到未来
$ git reflog //查看自己的命令历史
$ git reset --hard <版本号>
第2种方式回到未来
$ git revert HEAD^ //继续提交一次过去的未来
9.撤销修改
没有提交到暂存区,撤销工作区的修改
$ git checkout -- <file> [git restore <file>] //回到最近一次暂存区 或 版本库状态
已经提交到暂存区
$ git reset HEAD <file> [git restore --staged <file>] //命令git reset HEAD <file>可以把暂存区的修改撤销掉 并返回工作区
$ git checkout -- <file>[git restore <file>] //回到最近一次commit(暂存区已被清空)
已经提交到版本库
$ git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区
总结
- 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git restore <file>
。 - 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git restore --staged <file>
,就回到了场景1,第二步按场景1操作。 - 已经提交了不合适的修改到版本库时,想要撤销本次提交,查看上面的回到历史操作
10.删除文件
$ git rm <file>
# git rm <file> 相当于执行
- rm <file>
- git add <file>
总结
- 如果你用的rm删除文件,那就相当于只删除了工作区的文件,如果想要恢复,直接用
git checkout -- <file>
就可以 - 如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,需要先
git reset HEAD <file>
,然后再git checkout -- <file>
- 如果你想彻底把版本库的删除掉,先
git rm
,再git commit
就好了 - 如果想把删除的文件恢复,退回到上一个命令即可.