Git常用命令汇总
查看Git版本
git --version
配置Git
- 默认情况下, 需要配置user.name和user.email用于标识是谁提交的代码
git config user.name 名字
git config user.email 邮箱
- global配置全局
git config --global user.name 名字
git config --global user.email 邮箱
- 取消配置(取消全局配置需要加上global)
git config --unset user.name
git config --unset user.email
- 显示配置信息(查看全局需要加上global)
git config --list
配置别名
使用alias设置别名,例如,给status配置一个st别名
git config --global alias.st status
创建Git仓库
- 使用init命令,初始化仓库
git init
- 使用clone命令,克隆远程仓库
git clone 远程仓库地址
Git工作区域
git本地有三个工作区域,分别是:工作区、暂存区、本地仓库
加上git远程有四个工作区域:分别时:工作区、暂存区、本地仓库、远程仓库
- 工作区:编码的区域
- 暂存区:临时存放对文件改动的区域,暂存区用于直接跟工作区的文件进行交互,工作区文件的提交或回滚首选都是通过暂存区
- 本地仓库:安全存放数据的地方,有提交的所有版本数据。其中HEAD指向最新放入的仓库版本
- 远程仓库:与本地仓库相连接的另一台机器上的git仓库,用于代码交换
本地仓库常用命令
显示当前仓库状态
git status
将工作区提交到暂存区(指定文件)
git add [file]
将工作区提交到暂存区(一次性提交)
git add .
如果文件在工作区被删除,那么将这个删除提交到暂存区
git rm [file]
将暂存区提交到本地仓库(不指定file则提交所有文件)
git commit [file] -m "描述"
查看提交记录
git log
每个commit都对应一个commit id,是一个40位的16进制的SHA-1散列编码,用来唯一标记一个commit
- 可以添加 --pretty=oneline 参数来单行显示一个提交
- 可以添加 --graph 参数为commit记录添加图形化显示,在显示分支情况时很有用
- 可以添加 --abbrev-commit 参数来缩减要显示的提交记录
查看git操作历史
git reflog
显示当前仓库的操作记录,以及相关的commit id
丢弃工作区的修改
git restore [file]
该命令必须指定一个文件,将丢弃次文件的修改,文件将恢复到修改前的状态
git checkout -- [file]
该命令将丢弃该文件在工作区的修改,并让这个文件回到最近一次git commit或git add时的状态
文件对比
git diff [file]
该命令比较文件在暂存区和工作区的差异,如果不指定file,将显示所有文件的差异
可以使用--cached或--staged选项,显示暂存区和版本库中的差异
git diff --cached [file]
git diff --staged [file]
可以使用HEAD来比较工作区与版本库中的差异
git diff HEAD [file]
如果不想看所有的差异内容,则可以添加 --stat 来简化 git diff 的输出
git diff --stat HEAD [file]
比较两个commit之间的差异
git diff [commit_id_1] [commit_id_2] [file]
工作区
可以将工作区未提交的内容先暂存起来
git stash
暂存的工作区内容可以通过下面命令查看
git stash list
恢复工作区内容有两种方式
- 使用git stash apply恢复,恢复后,stash内容并不会删除,需要使用 git stash drop 来删除
- 使用git stash pop,恢复后,stash的内容也被删除了
远程仓库
创建SSH Key
一般的远程仓库,如:GitHub、GitLab等,与本地仓库之间的传输都是通过SSH加密的,所以在使用远程仓库前,需要设置SSH
- 生成SSH Key
ssh-keygen -t rsa -C "邮箱"
生成完成后,可以在用户主目录下生成.ssh文件夹,文件夹里会有id\_rsa和id\_rs.pub两个文件
这两个文件就是SSH Key的密钥对,id\_rsa是私钥,id\_rsa.pub是公钥
将生成的公钥设置到远程仓库即可
添加远程仓库
git remote add origin "远程仓库地址"
该命令将添加名为 origin 的远程仓库,origin后面跟的是这个远程仓库的地址
一般情况下,都会默认远程仓库名为 origin ,也可以指定其他名称
一个本地仓库可以添加多个远程仓库
git remote add github "远程仓库地址"
git remote add gitee "远程仓库地址"
显示当前远程仓库信息
git remote -v
删除已绑定的远程仓库
git remote rm origin
该命令将删除名为origin的远程仓库
推送分支到远程仓库
git push origin mastar
该命令将推送master分支到远程仓库
拉取远程分支到本地
git checkout -b dev origin/dev
该命令将从远程仓库拉去dev分支到本地
关联本地分支和远程分支
git branch --set-upstream-to=origin/dev dev
该命令将本地的 dev 分支与远程的 dev 分支进行关联
分支相关命令
git中的分支其实像是一个指针,默认情况下,会有两个指针,一个是master默认分支,一个是HEAD,指向当前分支
显示当前分支
git branch
该命令显示当前仓库中的分支,其中前面有*号的是当前所在分支,可以使用-r或-a选项显示远程分支或所有分支
创建分支
git branch <name>
该命令只是创建了一个分支,但并不会将当前分支切换到新分支上去
切换分支
git switch <分支名>
该命令将当前分支切换到指定的分支,也可以使用checkout来切换分支
git checkout <分支名>
创建并切换到新分支
git switch -c <分支名>
git checkout -b <分支名>
合并其他分支到当前分支
git merge <分支名>
删除分支
git branch -d <分支名>
分支管理策略
标签相关命令
标签总是和某个commit挂钩,可以理解为指向某个commit的指针
显示所有标签
git tag
创建标签
git tag <标签名>
在当前的提交上创建标签,标签名为后面的name指定,如果要在特定的commit上打标签,则可以使用下面命令
git tag <标签名> [commit_id]
上面的命令将在指定的 commit\_id 上创建名为 tag\_name 的标签
还可以创建带有说明的标签,用 -a 指定标签名,-m 指定说明文字
git tag -a <标签名> -m <message> [commit_id]
查看标签信息
git show <标签名>
删除标签
git tag -d <标签名>
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除
推送标签到远程仓库
git push origin <标签名>
也可以一次性推送所有标签到远程仓库
git push origin --tags
删除远程标签
首先需要删除本地的指定标签
git tag -d <标签名>
然后推送删除到远程
git push origin :refs/tags/<标签名>