1 简介
- Workspace:工作区
- Index / Stage:暂存区
- Repository:本地仓库
- Remote:远程仓库
2 Git 常用命令
将远端仓库克隆到本地,如:远端仓库http地址是 github.com/krisli007/v…
git clone https://github.com/krisli007/vue2demo.git
查看在工作区和暂存区的新增文件和修改文件
git status
添加当前目录的所有文件到暂存区
git add .
添加指定目录所有文件到暂存区
git add [dir]
添加指定文件到暂存区
git add [file1] [file2] ...
提交暂存区文件到本地仓库且写说明
git commit -m "xxx"
feat: 添加新特性
fix: 修复bug
refactor: 代码重构,没有加新功能或者修复bug
perf: 优化相关,比如提升性能、体验
style: 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
docs: 仅仅修改了文档
test: 增加测试用例
chore: 改变构建流程、或者增加依赖库、工具等
revert: 回滚到上一个版本
git add 和 git commit 的合并使用
git commit -a -m "xxx" === git add . + git commit -m "xxx"
从远端仓库更新最新文件到工作区
git pull
把本地仓库新文件推送到远端仓库
git push
3 分支管理
列出所有本地分支
git branch
列出所有远程分支
git branch -r
列出所有本地分支和远程分支
git branch -a
创建分支:复制当前分支内容到新的分支上,更改新分支的内容不影响之前的分支
git branch <new_branch>
切换到指定已有分支,并更新工作区
git checkout <branch_name>
创建并切换新的分支
git checkout -b <new_branch>
将分支到远端,但不建立跟踪关系
git push origin <new_branch>
建立追踪关系,在现有分支与指定的远程分支之间
git push --set-upstream origin <new_branch>
合并指定分支到当前分支
git merge <branch_name>
图形化显示显示分支提交情况
git log --decorate --oneline --graph --all
* 7c5e107 (HEAD -> master) change the readme file again
| * d4f3e9c (feature) change the readme file
|/
* 8709e13 README
* 710bdab game2
--all 表示显示所有分支,去掉可显示当前分支
目前是在master分支,/前是所有分支不同的文件,/后是共同的文件
删除分支
git branch -d <branch_name> //删除本地分支
git branch -D <branch_name> //强制删除分支
git push origin --delete <branch_name> //删除远程分支
4 工作常用
一般在工作上,都是已有仓库,自己将仓库拉取下来,默认拉取的是 master 分支,此时你需要拉取远端仓库已有的 product 分支
已有分支
需要本地分支和远程分支建立映射关系
git checkout -b <branch_name> origin/<branch_name> // 新建且切换本地分支且和远端同名分支关联
特性分支
二部曲
git checkout -b <new_branch> // 新建且切换到此分支
git push --set-upstream origin <new_branch> // 将本地分支和远端分支关联
5 其他命令
Git 的回滚
git reset
移动HEAD的指向(相当于撤销commit操作)
git reset --soft HEAD~
将快照回滚到暂存区域(将上一版本的文件覆盖掉暂存区域)
git reset --mixed HEAD~** (默认操作)
将暂存区域还原到工作目录(将上一版本的文件覆盖掉工作目录,甚至会删除最新修改文件)
git reset --hard HEAD~
根据版本号回滚,如果要更新到工作目录记得要加上 --hard
git reset 版本号(前几位数就可以) //
比较
比较暂存区域和工作目录
git diff
"---" 旧文件 "+++"新文件
比较两个历史快照
git diff ID1 ID2
比较当前Git仓库中和工作目录的快照
git diff HEAD
比较当前Git仓库中和暂存区域的快照
git diff --cached
删除文件
删除的只是工作目录和暂存区域的文件,也就是取消跟踪,在下次提交时不纳入版本管理,不能删除仓库的文件
git rm 文件名
当工作目录和暂存区域的同一个文件有不同的内容时,该命令是强制删除两个文件
git rm -f 文件名
只删除暂存区的文件
git rm --cached 文件名
重命名文件
git mv 旧文件名 新文件名