1.基本命令

1.本地初始化一个git仓库

  1. #初始化一个git仓库,使用此命令后会在当前目录生成一个.git的隐藏文件
  2. git init
  3. #指定一个目录初始化git仓库
  4. 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

123asdasdasd.jpg

#通过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