git 已经是一个流行的分布式版本控制管理系统。如果你还不知道它是什么,建议你去了解下它的历史。如果你已经在使用了,那么这里认为你已经对他有所了解,只是需要再熟悉一些常常常用的命令。
先简单说下 git 的几个区域,假设我们有个目录 git_learn,大致结构如下
git_learn/
│
├── dir1/
│ ├── .git
│ └── a.txt
│ └── README.txt
目录中,.git 是一个隐藏文件夹。这个可自行查看被 git 管理的目录。
git_learn 这个目录是工作区
工作区:当前操作文件的目录
版本库:当前工作区的隐藏目录 .git 文件夹
-
初始化本地 git 库
git init
-
新增文件
git add a.txt
说明:文件 a.txt 被添加到暂存区 -
把文件提交到仓库
git commit -m '描述本次修改'
说明:提交更改,把暂存区的所有内容提交到当前分支(本地库) -
查看当前分支状态
git status
-
查看提交历史
git log
简化显示的参数:–pretty=oneline
git log --pretty=oneline
说明: 看看每次提交了什么 -
时光机,回退到上个版本,当前版本为 HEAD,上一个版本为 HEAD^,
上上个版本为 HEAD^^ , 如果要回退 10 个版本可以写成 HEAD~10
git reset --hard HEAD^
如果想再找回回退的内容,指定那个版本号就可以了,前提是你得记住他
git reset --hard 787fb59
-
命令历史
如果忘记了之前的版本好也不要紧,可使用命令历史
git reflog
-
查看工作区和版本库文件内容的区别
git diff HEAD -- README.txt
-
如果工作区文件内容变化,想丢掉工作区的内容
新版本写法:git restore README.txt
这个也可以:git checkout -- README.txt
-
撤销暂存区的内容
新版本写法:git restore --staged README.txt
这个也可以:git reset HEAD README.txt
-
删除文件
- 新增一个文件 touch del.txt
git add del.txt
git commit -m 'add del.txt'
- 删除工作区文件
rm del.txt
- 从版本库删除文件
git rm del.txt
- 提交删除
git commit -m 'remove del.txt'
- 在删除未提交前,可以通过
git restore --staged del.txt
恢复暂存文件
继续通过git restore del.txt
恢复工作区的更改
- 新增一个文件 touch del.txt
-
分支管理
-
新建 dev 分支:
git branch dev
-
切换到 dev 分支:
git checkout dev
-
一步到位:
git checkout -b dev
-
新版本也可以使用 switch 切换分支:
git switch master
-
创建新分支 dev :
git switch -c dev
-
查看当前分支:
git branch
显示带 * 号的就是当前分支 -
切换回 master 分支:
git checkout master
-
合并 dev 分支到 master:
git merge dev
-
删除分支:
git branch -d dev
-
-
查看远程库信息
git remote -v
-
解除与远程库的关系
git remote rm origin
-
关联远程库:
git remote add origin git@server-name:path/repo-name.git
说明:关联一个远程库时必须给远程库指定一个名字,origin是默认习惯命名; -
第一次推送 master 分支所有内容
git push -u origin master
-
克隆远程库:
git clone git@server-name:path/repo-name.git
-
stash,如果你正在一个分支开发需求时,但有个紧急 bug 需要修复,那么就可以把当前内容进行 stash,当 bug 修复完,再恢复 stash 的内容
- 暂存你的工作内容
git stash
- 查看暂存的内容
git stash list
- 恢复暂存
git stash apply
(保留暂存),
git stash drop
(删除 stash)
git stash pop
(一步到位,恢复并删除) - 如果有多次的 stash,可以先看列表
git stash list
- 如果有指定恢复:
git stash apply stash@{0}
- 暂存你的工作内容