1.基本命令
1.本地初始化一个git仓库
#初始化一个git仓库,使用此命令后会在当前目录生成一个.git的隐藏文件
git init
#指定一个目录初始化git仓库
git init 目录路径
2.克隆git远程仓库
#克隆远程仓库,可通过ssh或http链接克隆仓库
git clone 远程仓库ssh货http链接
#例子 克隆vue的源代码
git clone https://github.com/vuejs/vue.git
3.将文件添加到暂存区
#将指定文件添加到本地的暂存区
git add [文件名1...]
#例子:将my.txt和you.txt添加到本地仓库的暂存区
git add my.txt you.txt
#将当前目录下的所有文件添加到暂存区
git add .
4.提交代码
#提交当前目录到git仓库 -m 用于指定提交的说明
git commit -m "注释"
#提交指定文件到git仓库
git commit 文件名1 文件名2 ... -m "注释"
#提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
#提交时显示所有diff信息
git commit -v
#使用一次新的commit,替代上一次提交,如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit -amend -m "注释"
5.查看提交状态
git status
6.显示暂存区和工作区的代码差异
#显示当前目录下所有文件在暂存区和工作区的代码差异
git diff
#显示指定文件在所有文件在暂存区和工作区的代码差异
git diff 文件名
7.删除文件
#删除工作区文件,并且将这次删除放入暂存区
git rm 文件名1 文件名2 文件名3 ...
#停止追踪指定文件,但该文件会保留在工作区
git rm --cached 文件名
8.修改文件
git mv 原文件名 新文件名
9.查看提交历史
#查看提交历史,可查出提交版本号,有了提交版本号就可以使用回退命令指定提交版本号还原版本了,如下图
git log
#查看提交历史并显示1行
git log -pretty=oneline
#通过blame指定文件查看提交历史
git blame file
10.回退版本
//回退到指定提交版本号
git reset --hard 提交版本号
//恢复暂存区的指定文件到工作区
git checkout [file]
//恢复某个commit的指定文件到暂存区和工作区
git checkout [commit] [file]
//恢复暂存区的所有文件到工作区
git checkout .
//重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
git reset [file]
//置暂存区与工作区,与上一次commit保持一致
git reset --hard
//重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset [commit]
//重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
git reset --hard [commit]
//重置当前HEAD为指定commit,但保持暂存区和工作区不变
git reset --keep [commit]
//新建一个commit,用来撤销指定commit,后者的所有变化都将被前者抵消,并且应用到当前分支
git revert [commit]
//暂时将未提交的变化移除,稍后再移入
git stash
git stash pop
11.本地仓库关联至远程仓库
#通过git clone命令下来的仓库一般不需要关联远程仓库,git init初始化的仓库需要关联到远程仓库,命令如下:
git remote add origin url
#通过http连接关联到远程仓库
git remote add origin git@github.com:vuejs/vue.git
#通过ssh连接关联到远程仓库,跟上一种效果是一样的
git remote add origin git@github.com:yibird/springBoot-example.git
#删除远程连接
git remote rm origin
#推送本地仓库到远程仓库的master分支,加个-f表示强制推送(慎用)
git push -u origin 分支名称
#例子推送到master分支
git push -u origin master
2.分支相关命令
分支(branch)就相当于一个应用的环境(用于区分应用的环境),一般一个仓库可分为master(主分支)、dev(开发分支)、release(发布分支)、test(测试分支)等等,不同的公司分支的有不同分支结构和命名方式。
1.查看所有分支
#查看本地仓库所有分支(git branch -a命令的简写):
git branch
#查看远程仓库所有分支
git branch -r
2.创建分支
#创建分支
git branch [分支名称1,...]
#例子:
git branch test1 test2
#创建分支并切换到创建的分支
git checkout -b 分支名称
#创建分支并切换到创建的分支,并设置分支的别名
git checkout -b 分支别名 分支名
#例子
git checkout -b branch-alias branch1
总体案例:
#创建一个新的分支
git branch test
#切换到test分支
git checkout test
#推送到远程分支,不然所操作的都只是在本地,而不是在远程
git push origin test
3.切换分支
#切换分支,如果你想把本地仓库提交到远程仓库的某个分支,那个你本地必须有这个仓库,例如你想提交代码到
#远程仓库的dev分支,你本地必须有dev分支才能提交到远程仓库
git checkout 分支名
#切换到上一个分支
git checkout -
4.删除分支
#删除本地分支
git branch -d [分支名称1,...]
#例子
git branch -d test
#删除远程分支
git push origin --delete [分支名称1,...]
#例子
git push origin --delete test1 test2
5.分支合并
合并命令: git merge 将要与当前分支合并的分支名
案例:假设你将要dev分支与master分支进行合并
#首先从dev分支切换到master分支
checkout master
#为了仓库是最新的,所以把远程master分支的代码pull(拉)取到本地,多人开发建议这样
git pull origin master
#把dev分支合并到master分支,如果不行在命令后面加上--allow-unrelated-histories,此选项表示允许
#无关历史记录
git merge dev
#查看状态及执行提交命令
git status
6.刷新分支
git remote update origin --prune
3.tag相关命令
使用tag可以帮助我们记录某个提交快照,例如当项目出现紧急问题时(功能出了问题或出现了bug),我们可以为项目打上tag,当需要回退版本时,我们就能清晰地知道回退到那个tag,而不是通过git logo 查看版本号回退到某个模糊的版本号。
1.列出本地所有tag
git tag
2.创建tag
Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。
而附注标签是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。
#创建附注tag命令,-m 选项指定了一条将会存储在标签中的信息
git tag -a tag名称 -m "tag信息"
#创建附注tag例子
git tag -a v1.0 -m "v1.0更新"
#查看所有tag
git tag
#创建轻量tag命令,轻量tag不包含任何信息,不需要指定-a -m等选项
git tag tag名称
#创建轻量tag例子
git tag v1.1
#查看所有tag
git tag
3.将本地tag推送到远程仓库上
默认情况下,git push
命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样——你可以运行 git push origin <tagname>
。
#将本地tag推送到远程仓库商
git push origin tag名称
#例子
git push origin v1.0
#把本地所有tag推送到远程仓库
git push origin --tag
4.删除tag
#删除本地tag,以下命令只能删除本地tag,不能删除远程仓库的命令
git tag -d tag名称
#例子
git tag -d v1.0
#删除远程仓库tag
git push origin :refs/tags/tag名称
#例子
git push origin :refs/tags/v1.0