初始化仓库
方式一:将本地仓库初始化为git仓库
git init
方式二:从远程服务器克隆一个已经存在的仓库
git clone 远程仓库地址 [可选;自定义仓库名称]
添加修改到暂存区
添加指定文件的修改到暂存:区git add 文件名
添加所有修改:git add * 或者 git add .
添加所有txt文件修改:git add *.txt
查看提交历史
查看日志:git log
查看日志,按行显示(显示精简信息):git log --oneline
查看日志,按行显示(显示完整信息):git log --pretty=oneline
图形化显示日志:git log --oneline --decorate --graph --all
查看引用日志: git reflog
撤销
恢复删除文件
这里要按删除的方式来分别讨论,删除方式不同,恢复的方式就会不同,常见的删除方式如下:
rm 文件名
相当于在目录中删除文件,这种方式只删除了工作区的文件,本地库和暂存区中还保存有该文件。
git rm --cached 文件名
这种方式只删除了暂存区的文件,但是本地库和工作区还保存有该文件
git rm 文件名
这种方式删除了暂存区和工作区的文件,但是本地库还保存有文件。
对应的恢复方式如下:
恢复到暂存区
git restore --staged 文件名 ,从本地库恢复到暂存区。
恢复到工作区
git restore文件名 ,从暂存区恢复到工作区。
恢复到暂存区和工作区
先git restore --staged 文件名 ,从本地库恢复到暂存区,
再git restore文件名 ,从暂存区恢复到工作区。
撤回修改
丢弃文件中所有的修改,回到最后一次提交的状态。
git checkout -- 文件名
或者 git restore文件名
撤回暂存
先git restore --staged 文件名 ,从本地库恢复到暂存区,
再git restore文件名 ,从暂存区恢复到工作区。
撤回提交
reset操作要慎重使用,它是撤回到指定的提交点,reset之后,它之后的提交记录都会消失。尤其是git reset --hard 提交id,它会丢弃本地的所有修改。而且reset不适用于已经提交到远程仓库的撤回,在本地库使用更合适。
git reset --soft 提交id
只是移动HEAD,指向本地库中指定提交id的快照,但是暂存区跟工作区的内容没有变化,此时如果需要让暂存区跟本地库一致的话,可以执行 git restore --staged 文件名,如果需要让工作区跟暂存区一致的话,可以执行 git restore 文件名
git reset --mixed 提交id
移动HEAD指针,指向本地库中指定提交id的快照,并更新暂存区的内容,工作区的内容不变,如果需要让工作区跟暂存区一致的话,可以执行 git restore 文件名。
git reset --hard 提交id
移动HEAD,指向本地库中指定提交id的快照,更新暂存区和工作区的内容。
还原提交
git revert 提交id
revert用来还原指定的提交,它会生成一个新的提交来覆盖指定的提交,新的提交内容就是指定记录的上一次提交,但是它之后的提交历史都会保留。
远程仓库
查看远程仓库:
git remote
git remote -v
添加远程仓库
git remote add 仓库名称 仓库地址
推送到远程仓库
Git push 仓库名 分支名
默认是推送到 仓库的master ,相当于执行 git push origin master,也可以简写成 git push
查看某个远程仓库
Git remote show 仓库名称
修改远程仓库名称
git remote rename 旧名称 新名称
删除远程仓库
git remote rm 仓库名称 或者 git remote remove 仓库名称
标签
比较有代表性的是标记发布结点( v1.0 、 v2.0 等等)
轻量标签
git tag tag名称 提交id ,给提交记录添加tag
附注标签
git tag -a tag名称 -m 描述信息
查看标签 git show tag名称
git tag 查看tag
git log tag名称 查看tag相关的提交记录
推送标签到远程仓库 git push origin tag名称
推送所有标签到远程仓库 git push origin --tags
删除标签
git tag -d tag名称 ,这样只会删除本地的标签
如果需要把这个删除操作推送到远程仓库,执行
git push origin :refs/tags/tag名称
或者
git push origin --delete tag名称
检出标签
git checkout -b tag名称 ,根据tag创建分支,并切换到该分支