git命令的使用总结

166 阅读7分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情

摘要

git常用的命令并不太多,而且也是比较容易理解的,但是如果是多人协作时,其实git的命令就显得不够用了。为了能够很好的通过git的命令来管理仓库。所以对git的命令做了一些比较简单的总结。

基本使用

git的基础命令,相对来说比较简单,如下:

1.初始化仓库

git init 将当前目录初始化为git仓库

2.添加文件

git add 添加文件 -A(所有文件) git add -u 添加修改和删除的文件

  1. 删除文件

git rm 删除文件

4.提交到仓库

git commit -m <"tips"> 把文件提交到仓库

5.查看仓库状态

git status 查看仓库状态

规范

在网络上找到了一张git知识比较全的思维导图。如下图片:

git基本操作流程图

.git文件

这个是版本库

当我们在本地 使用 git init 命令时,会生成一个.git 的隐藏文件。

简单命令

git init 初始化版本git项目

git remote add origin 链接本地仓库与远程仓库

git config --list 检查配置信息

如下截图:本地与远程连接,然后提交数据到分支

git 配置命令

git config --list 查看配置信息

git config --local --lilst 查看本地仓库配置

git config --global --list 查看全局配置

git config --system --list 查看系统配置

git config --global user.name="your name" 配置你的用户名

git config --global user.email="your email" 配置你的邮箱

分支管理

查看本地分支

git branch

查看远程分支

git branch -r

查看本地和远程分支

git branch -a

从当前分支,切换到其他分支

git checkout

创建并切换到新建分支

git checkout -b

截图是创建新分支成功:

如果要想分支显示出来,则每个分支必须是有提交到本地仓库的内容的操作的,否则这个分支就可能不存在。

删除分支

git branch -d

当前分支与指定分支合并

git merge branch-name

如果被合并的内容比当前内容多,则直接是添加,如下截图:

如果是被合并的分支里边的内容文件,与当前的分支的内容文件存在差异时,以被合并的内容为主(所以分支最好是新建文件,而不是在原先的文件中进行修改,这样会覆盖掉原先文件的内容),则看如下截图:

查看哪些分支已经合并到当前分支

git branch --merged

如下截图是分支:

查看哪些分支没有合并到当前分支

git branch --no-merged

查看各个分支最后一个提交对象的信息

git branch -v

删除远程分支

git push origin -d

删除分支:

git branch -d 分支名

重命名分支

git branch -m

拉取远程分支并创建本地分支

git checkout -b 本地分支名 origin/远程分支名

还有另外一种形式是:

git fetch origin :

分支之间的关系

每一个分支是有不同的内容的。分支之间也是不影响的,这个分支在什么时候创建的,在这个分支上提交了哪些内容都是与这个分支有关的,与其他分支是没有关系的。

fetch指令

  • 将某个远程主机的更新,全部取回本地

git fetch <远程主机名>

  • 取回特定的分支

git fetch <远程主机名> <分支名>

  • 将某个分支的内容取回给某个本地的分支,则是如下操作:

git fetch origin : //这个是将远程master分支取回给本地分支

再举一个栗子:

git fetch 远程主机 远程主机分支:本地主机分支

上边的意思是将远程主机的某一个分支拉回给本地的某一个分支

拉取本地没有这个分支名,则远程的分支

git checkout -b 本地不存在的分支名 origin/master01

origin/master01是远程分支名,远程分支名的操作是不带remotes的

如果警告,可以先 git fetch 再执行上边的操作

撤销

撤销工作区修改

git checkout --

就是修改完,还没有到暂存区就进行撤回

暂存区撤回(不覆盖工作区)

git reset HEAD

在工作区把文件进行修改后,相关命令操作后就会把文件存储在暂存区。

然后暂存区撤销,就是恢复到工作区的状态。

版本退回

版本退回的语法如下:

git reset --( soft | mixed | hard ) <HEAD~num>

soft:回退commit的操作,其他不变

mixed:取消add追踪 以及 commit提交

hard:工作区 暂存区 commit 都撤销,其实就是返回到了上一个版本。内容是不会删除的,只是修改的状态没有了。

另外说明: ~num 表示的是返回上一个版本几次。例如num=3,则表示返回上上上次的版本。

回退到指定版本: git reset --hard 版本号

测试1 默认是mixed 暂存区撤回:git reset

如下截图,则一开始是在暂存区的,则现在不在暂存区了

测试2:测试commit区 撤退 git reset --hard

git reset --hard commitId

commitId是 版本号

如下截图,是本地仓库的提交日志,如果我使用上述命令后,能够返回即可

则操作版本撤回操作后,上一个版本就不见了

版本退回的追忆事项:

如果返回到指定版本,则内容也会是指定版本的内容。如果只是默认退回版本,一般是指当前版本,则回退的是当前操作的追踪。

git reset回退版本会覆盖掉原先的记录:

我们使用git log会查看到本地仓库的版本,一旦选择我们选择之前的某一个版本进行回退,那么再使用git log进行查看时,会发现选择这个版本之后的版本都不见了。例如:有1到10的版本,我们会退到4版本后,就只剩下4以前的版本了。

如下截图说明:

上述有很多个版本,在我们执行退回操作到14:22那个版本时,则是如下结果:

补偿版本退回

就是还是前进的而不是后退,只是这个前进内容用的是之前的版本

git revert HEAD 上一个版本

git revert -n 版本号

状态查询

查看状态

git status

查看历史操作记录

git reflog

查看日志

git log

差异比较

比较工作区和缓存区

git diff

比较缓存区与本地最近一次commit内容

git diff --cached

比较工作区与本地最近一次commit内容

git diff HEAD

分支

master分支:主分支,用于部署生产环境的分支,确保稳定性。

master分支一般由develop以及hotfix分支合并,任何情况下都不能够直接修改代码。

develop分支,开发分支,开发新功能时,feature分支就在它下边。

feature分支,开发新功能时,命名规范 feature/分支名

release分支 为预上线分支 发布提测阶段 会release分支为基准体测

hotfix分支 分支命令名为:hotfix/分支名,修复分支,线上出现紧急问题时,需要及时修复,在master的基础上创建hotfix分支,修复完成后需要合并到master和develop两个分支上。

忽略文件.gitignore

#以整个开头的会被忽略

node_modules 会被忽略

.vscode 会被忽略

.md会被忽略

!README.md 不会被忽略

doc/*.txt 会被忽略,但是doc/images/arch.txt是不会被忽略的

doc/**/*.txt 忽略doc/目录下所有扩展名txt文件

总结

基础命令都还是比较容易的。难点在于回退的操作和分支管理。回退主要是与日志一起使用,每一次的git操作都带有日志的唯一id,所以可以通过id进行代码的撤回。而分支的话,每一个分支都有自己的文件目录,切换分支其实就是切换不同的文件目录。