首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Git常用命令总结

Git常用命令总结

作者头像
zy010101
发布2022-05-05 15:57:50
发布2022-05-05 15:57:50
5870
举报
文章被收录于专栏:程序员程序员

Git设置

Git在初次使用之前,应该进行一些设置。主要是设置user.name和user.email

代码语言:javascript
复制
git config --global user.name "xxx"       #"xxx"是你的名字
git config --global user.email "email address"     #"email address" 是你的电子邮件地址

初始化仓库

新建一个目录,作为你的项目目录,或者是在已有的项目目录下,输入下面的命令,来初始化一个仓库。

代码语言:javascript
复制
git init

使用下面的命令将你项目的文件纳入仓库中。

代码语言:javascript
复制
git add <file>

当你把项目文件添加进来之后,就可以将文件提交的仓库了。使用下面的命令即可。

代码语言:javascript
复制
git commit -m "xxx"        #"xxx"是本次提交的说明

常用查看操作

下面的命令进行工作区状态查询,查看文件是否被git所跟踪,是否提交到暂存区。

代码语言:javascript
复制
git status

想要对比文件的差异,可以使用下面的命令,该命令后面还可以指定和那个版本做比较。默认是将当前工作区和当前版本进行比较。

代码语言:javascript
复制
git diff

查看Git提交记录,可以使用下面的命令来查看,它显示当前版本之前的所有提交历史。

代码语言:javascript
复制
git log

如果想要查看所有的历史记录,使用下面的命令。它给出所有版本的提交记录,包括当前版本之前和之后的所有历史记录。

代码语言:javascript
复制
git reflog

版本回退

版本回退使用下面的命令。HEAD是git中的指向当前版本的指针,HEAD^表示上一个版本,HEAD^^表示上上一个版本,30版本之前HEAD~30。

代码语言:javascript
复制
git reset --hard HEAD^

转到任意版本,可以使用下面的命令。通常该命令需要和git reflog命令配合使用。

代码语言:javascript
复制
git reset --hard c2ffbb        #c2ffbb是git reflog查询出来的版本索引

撤销修改

如果你只是想撤销对当前工作区所做的修改,那么你可以使用下面的命令来进行撤销。

代码语言:javascript
复制
git restore <file>

如果你的文件已经使用git add提交到了暂存区,那么撤销暂存区的修改需要使用下面的命令。撤销完暂存区之后,记得也要撤销一下工作区。

代码语言:javascript
复制
git restore --staged LICENSE

那么,如果你的文件已经提交到仓库(git commit),那么这时候撤销操作实际就是版本回退。因为每一次git commit都会产生一个版本。

删除文件

Git也提供了删除文件的操作,可以让你删除不想要的文件。使用下面的命令即可。删除之后,文件也会从当前工作区消失。但是如果之前某个版本有过这个文件,那么如果你后悔了,还可以从该版本拿该文件。

代码语言:javascript
复制
git rm <file>

增加文件

增加文件,其实是让git来跟踪文件。你只需要将你在项目目录下新增的文件使用git add来进行跟踪即可。这样就可将文件纳入git仓库之中。

从远程仓库克隆

从远程仓库克隆非常简单,使用下面的命令即可。

代码语言:javascript
复制
git clone <url> [projectname]

url是仓库的地址,后面的projectname是项目的名字,可以没有。当你不指定名字的时候,就会使用远程仓库上原本的名字。

将本地仓库推送到远程

另一种情况就是你准备把本地的仓库推送到远程,那么首先,你必须在远程新建一个仓库。然后它就会给你一个地址(url),之后使用下面的命令来推送仓库到远程。

代码语言:javascript
复制
git remote add <name> <url>

一般而言,这个name都会是origin,这是git默认的叫法,url就是远程仓库给你的地址。因此,该命令更加一般的形式如下。

代码语言:javascript
复制
git remote add origin <url>

分支操作

创建分支,在git上创建一个分支非常简单,使用下面的命令即可。

代码语言:javascript
复制
git branch <name>

查看分支命令如下。

代码语言:javascript
复制
git branch

切换分支命令可以是下面的两条,它们实现的功能是一样的。只不过比较老的git版本不支持switch命令。使用switch其实比较好,这样没有歧义。

代码语言:javascript
复制
git checkout <name>
git switch <name>    #比较新的git版本支持git switch

git也提供了在创建+切换一起完成的指令,如下。

代码语言:javascript
复制
git checkout -b <name>
git switch -c <name>        #新版本git

删除本地分支命令如下所示。前提是你需要离开这个将被删除的分支,然后删除它。

代码语言:javascript
复制
git branch -d <name>

合并某分支到当前分支,使用的命令如下。当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

代码语言:javascript
复制
git merge <name>

查看合并分支图的命令如下。 --oneline是控制版本信息在一行内显示。

代码语言:javascript
复制
git log --graph --oneline

管理现场

Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。命令如下。

代码语言:javascript
复制
git stash

你可以同时拥有多个现场,但是不建议这么做。查看现场的命令如下。

代码语言:javascript
复制
git stash list

 恢复现场可以一步进行,也可以分为两步,分别如下所示。

代码语言:javascript
复制
#两步
git stash apply        #恢复现场
git stash drop         #删除现场
代码语言:javascript
复制
#一步
git stash pop        #恢复现场并删除保存

远程仓库操作

查看远程库信息命令如下。

代码语言:javascript
复制
git remote -v

推送分支,命令如下。name就是你需要推送的分支名称。

代码语言:javascript
复制
git push origin <name>

抓取分支,命令如下。在你抓取某分支之前,应当在本地创建该分支并切换到该分支。

代码语言:javascript
复制
git pull origin <name>

删除远程分支和删除本地分支不太一样,它的指令如下。注意它不会删除本地的同名分支,因此你还需要使用删除本地分支。

代码语言:javascript
复制
git push origin --delete <name>

分支管理策略

在实际开发中,我们应该按照⼏个基本原则进⾏分⽀管理: ⾸先, master 分⽀应该是⾮常稳定的,也就是仅⽤来发布新版本,平时不能在上⾯⼲活; 那在哪⼲活呢?⼲活都在 dev 分⽀上,也就是说, dev 分⽀是不稳定的,到某个时候,⽐如1.0版本发布时,再 把 dev 分⽀合并到 master 上,在 master 分⽀发布1.0版本; 你和你的⼩伙伴们每个⼈都在 自己的分⽀上⼲活,每个⼈都有⾃⼰的分⽀,干完活以后,时不时地把自己的分支往 dev 分⽀上合并就可以了。

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

开发一个新feature,最好新建一个分支;如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

变基

Git有一个叫做rebase的操作,rebase操作可以把本地未push的分叉提交历史整理成直线。

代码语言:javascript
复制
git rebase

标签管理

查看标签命令如下。

代码语言:javascript
复制
git tag

创建标签命令如下,对当前版本打标签。name是tag的名字。

代码语言:javascript
复制
git tag <name>

对历史提交打标签。name是tag的名字,index是历史提交的索引。

代码语言:javascript
复制
git tag <name> <index>

查看标签信息。name是标签名称。

代码语言:javascript
复制
git show <name>

创建带有说明的标签,用-a指定标签名,-m指定说明文字。

代码语言:javascript
复制
git tag -a <name> -m "xxx" [index]

删除本地标签。

代码语言:javascript
复制
git tag -d <name>

删除远程标签。在删除远程便签之前,应该先删除本地标签。

代码语言:javascript
复制
git push origin :refs/tags/<name>

推送标签到远程。

代码语言:javascript
复制
git push origin <name>        #推送一个标签
git push origin --tags        #推送所有标签

忽略特殊文件

在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。GitHub已经为我们准备了各种配置文件,https://github.com/github/gitignore

当然了Gitee也有。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • Git设置
  • 初始化仓库
  • 常用查看操作
  • 版本回退
  • 撤销修改
  • 删除文件
  • 增加文件
  • 从远程仓库克隆
  • 将本地仓库推送到远程
  • 分支操作
  • 管理现场
  • 远程仓库操作
  • 分支管理策略
  • 变基
  • 标签管理
  • 忽略特殊文件
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档