参考指令:https://liaoxuefeng.gitee.io/resource.liaoxuefeng.com/git/git-cheat-sheet.html#
基础指令
把目录变成Git可以管理的仓库
git init
把文件添加到版本库
git add <file1> <file2> ...
把文件提交到仓库
git commit -m <describe>
显示工作区状态
git status
显示提交内容和工作区之间等的差异
git diff <file>
显示提交日志
git log [--pretty=oneline]
重置当前HEAD到指定状态(版本回退)
git reset --hard [HEAD / commit id]
HEAD : 当前版本
HEADn... : n个版本(n 为 ^),也可以写成HEAD~n (此时 n 为数字)
commit id :版本号
查看命令历史
git reflog
撤销修改
git checkout -- <file>
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
git checkout -- file命令中的 -- 很重要,没有--,就变成了“切换到另一个分支”的命令
撤销暂存区的修改
git reset HEAD <file>
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本
如果暂存区提交到了版本库,可以使用[版本回退]到指定版本
删除文件
git add/rm <file> : 先手动删除文件,然后使用 git rm <file> 和 git add <file> 效果是一样的
另一种情况是删错了,因为版本库里还有,所以可以很轻松地把误删的文件恢复到最新版本:git checkout -- <file>
git checkout -- 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
远程仓库
添加远程库
由于你的本地Git仓库和远程仓库(github/gitee)之间的传输是通过SSH加密的,登陆github/gitee,添加你自己的id_rsa.pub文件
的内容。所以,需要一点设置:
创建SSH Key
ssh-keygen -t rsa -C "你的邮箱"
本地仓库和远程仓库,两个仓库进行远程同步
git remote add origin git@gitee.com:xxxxxxx.git :远程库的名字就是origin
本地库的所有内容推送到远程库上
git push -u origin master
第一次推送master分支时,加上了-u 参数,Git不但会把本地的master分支内容推送的远程新的master分支,
还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
git push origin master
查看远程库信息
git remote -v
删除远程库
git remote rm origin
此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。
远程库本身并没有任何改动。要真正删除远程库,需要登录到远程仓库,在后台页面找到删除按钮再删除。
远程库克隆
从远程库克隆到本地库
git clone git@gitee.com:xxxxxxx.git
远程仓库给出的地址不止一个,还可以用 https://gitee.com/xxxx.git 这样的地址。
实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,
但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https
分支管理
创建并切换分支
git checkout -b <分支>
-b :创建并切换,相当于以下两条命令:
git branch dev
git checkout dev
查看当前分支
git branch
切换分支
git checkout <分支>
合并分支
git merge <分支> : 用于合并指定分支到当前分支
删除分支
git branch -d <分支>
储藏工作现场
git stash
查看储藏工作现场列表
git stash list
复制一个特定的提交到当前分支
git cherry-pick <commit id>
如果要丢弃一个没有被合并过的分支
git branch -D <分支>
标签管理
创建标签
git tag <标签名称>
给指定的 commit id 创建标签
git tag <标签名称> <commit id>
删除标签
git tag -d <标签名称>
推送标签到远程
git push origin <标签名称>
一次性推送全部尚未推送到远程的本地标签
git push origin --tags
从远程删除标签
git push origin :refs/tags/<标签名称> : 删除远程标必须先从本地删除