我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux中git命令有什么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux中git命令有什么用

这篇文章将为大家详细讲解有关linux中git命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

前言

因为结合了开发中可能遇到的场景,篇幅较长,不过我觉得很有助于你理解 git 的运作机制,而不是死记硬背命令。

HEAD指针 始终指向的是当前分支的最新版本号,HEAD^, HEAD^^, ^ 的个数 n 或 HEAD~n,n 代表前 n 个版本号。

在项目中直接使用 linux rm 只会删除工作区的文件,git rm 同在删除工作区文件的同时删除 stage 中的,或使用 git rm --cached 只删除 stage 中的。

一些基本的操作

#全局配置git config --global user.name "your username"git config --global user.email youremail@email.comgit config --global color.ui true#mkdir git_proj & cd git_projgit initecho "# readme.md" >> README.mdgit add README.mdgit commit -m "readme commit"# 添加远程仓库 并给它取个别名 origingit remote add origin git@github.com:username/repositoryName.git# 将本地仓库推送至 origin 的 master 分支并与此分支关联(-u 的作用,后期不必在使用)git push -u origin master# 从远程仓库 origin 的 master 分支获取最新源码并下载到 tmp 分支git fetch origin master:tmp# 比对 tmp 分支于 master 分支做了哪些改动git diff master tmp# 合并 tmp 分支到 master 分支git merge tmp# clone copy 一个完整的远端仓库到本地git clone git@github.com:username/repositoryName.git# pull 获取 origin 的 master 分支并直接和当前分支合并# 所以可能会发生冲突git pull origin master

checkout

checkout 命令有两个主要作用:切换分支 和 回滚文件到当前的 stage 版本 或 repository 版本

切换分支

# 切换到 new_branch 分支git checkout new_branch# 创建并切换到 new_branch 分支git checkout -b new_branch

回滚工作区的文件到最新 stage 版本 或 repository 版本,即从 stage 或 repository 中检出最新版本

# -- 是文件标示符 表名后面的参数为文件 避免产生切换 branch 的歧义git checkout -- <filename>

回滚时会先检查 stage 中是否有对应的文件,如果没有才会使用 repository 中最新的版本。而当对某文件进行了多次修改和 add 操作后,使用 checkout 我们只能将文件回滚到最新一次的 add 的版本。

但在某些场景下我们可能想回滚到 repository 中的最新版本,怎么做呢?配合 reset 命令的可以很容易做到。
先给出命令:

git reset HEAD <filename> & git checkout -- <filename>

这样就可以将工作区的 filename 回滚到 repository 中的最新版本了。具体原理我们将在实例中详细的讲解。

reset

git 的 reset 命令比较绕,需要耐心的理解。简单来说,reset 有三种重置级别,我们需要准确理解每个级别的作用。

soft:回退版本号。作用于 repository

mixed:回退版本号,重置 stage。作用于 repository 和 stage

hard :回退版本号,重置 stage,重置工作区源码。作用于 repository,stage 和 workspace

我们简单展示下 repository 的版本号,我们以此为 demo 分别尝试三个级别的 reset

git logversion D (HEAD) <-- HEAD指针version C (HEAD^)version B (HEAD^^)version A (HEAD~3)

命令格式:

git reset [--soft|--mixed|--hard] version_no <filename>

--soft:只是单纯的移动 repository 的 HEAD指针 到制定版本号。stage 和工作区没有任何变化。

# 将 HEAD 指针回滚至上一版本 使用 git log 你会发现提交日志退回到了上一版本号git reset --soft HEAD^#版本号现状version C <-- HEAD指针version Bversion A

--mixed:默认选项,移动 repository 的 HEAD指针 到指定版本号,同时用此版本重置 stage 区,所以可能会让工作区的某些文件处于 unstage 状态(当工作区的文件与 repository 中的版本不一致时)。注意,这里是可以指定文件的。soft 本身和文件无关,hard 则是不能单独指定文件,只能全部重置。

# HEAD指针 还是指向 HEAD git reset HEAD^2 <filename>#版本号现状version B <-- HEAD指针version A

HEAD指针 指向 version B,并且 stage 已经被 version B 的文件重置,工作区则不受影响。

这里有个很实用的小技巧:

git reset version_no <filename> & git checkout -- <filename>

这两个命令组合在一起可以让工作区的指定文件回滚到 repository 中对应的 version_no 版本。
如果 version_no 是 HEAD 的话那就可以回滚文件到最新一次的提交。

--hard:谨慎使用!!!移动 repository 的 HEAD指针 到指定版本号,同时用此版本重置 stage 区 和 工作区源码。这里要特别注意,工作区的源码也会被覆盖重置掉,你的修改会全部丢失。简单来说就是将代码彻底恢复到指定版本。hard 是没办法指定文件的,要么回滚,要么全回滚。

# HEAD指针 还是指向 HEAD git reset --hard HEAD^3#版本号现状version A <-- HEAD指针

此时,HEAD指针 指向 version A,并且 stage 和 工作区的文件已经被 version A 的文件重置。整个项目的状态完全回到提交 version A 时按下回车键的那一刻。

rm

git rm 不同于直接使用 rm,git rm 会删除工作区 和 stage 区的内容。注意:这里你没办法再使用 git checkout -- <filename> 来回滚操作了,因为工作区也没有 filename 文件了,没办法与 repository 做关联,只能使用 git reset HEAD <filename> 来重置 stage 中的此文件,然后 git checkout -- <filename>

git rm [--cached] [-r] [-f] <filename>

这里就提示一点,只想把 stage 中的文件删除掉让文件脱离 git 的管理,可以使用

git rm --cached <filename>

此时工作区的 filename 并不会被删除,但状态会被改为 untracked,同时 stage 会记录下 filename 的状态为删除,提交的话版本库将新增一个 filename 被删除掉的版本。

删除 stage 中的文件和使用 reset命令 重置 stage 中的文件是有区别的,删除会让文件状态更改为 untracked,而重置会让文件状态更改为 unstage(如果工作区和 stage 文件内容不一致)。

小实例场景:

回滚工作区某文件到指定的 repository 版本

工作中,我们可能会针对某文件做多次修改和 add 到 stage 的操作,而后发现思路完全错了,需要重新设计开发。

比如文件 foo 的 A版 我提交了一次后,又进行了 B版 和 C版 的两次修改并 add 到了 stage 区。第三次修改后 D版 我发现一开始思路就错了,需要重新设计。那此时直接使用 git checkout -- foo 是拿不到最初的 A版 的,因为 stage 区还存放着 foo 的 C版。此时我们便可以使用 git reset HEAD foo 命令,repository 最新版本号中存放着 foo 的 A版,命令会在不移动 HEAD 的前提下,使用 foo A版 去重置 stage 区。命令执行后 stage 区的 foo 文件已经是 A版 了。我们再使用 git checkout -- foo 便可以将工作区的 foo D版 回滚至 A 版。即:

git reset HEAD foo & git checkout -- foo

HEAD 代表当前版本,所以 HEAD指针 不会移动。同时 stage 区会被 repository 的当前版本的 filename 重置,也就说 stage 区 存放的 filename 与 repository 中相同了。此时我们再使用 git checkout -- <filename> 便可以回滚工作区的 filename 到 repository 的当前版本。其实就是利用 reset --mixed 会重置 stage 区,然后 checkout 会将 stage 区的文件检出到工作目录。当然,reset 很灵活,可以回滚任意指定的版本。

其实如果只是回滚至当前版本的话,还有个命令能实现相同的功能

git rm --cached <filename> & git checkout -- <filename>

git rm --cached <filename> 会将 stage 中的此文件删除,文件状态会变为 untracked,然后 checkout 时发现 stage 中木有此文件,故会去 repository 的当前版本中检出此文件。

diff

  • git diff -- <filename> 工作区 比较 暂存区

  • git diff --cached -- <filename> 暂存区 比较 本地库当前版本

  • git diff HEAD~N -- <filename> 工作区 比较 本地库第N个版本

  • git diff HEAD HEAD^ -- <filename> HEAD 比较 HEAD^

  • git diff master tmp -- <filename> master 比较 tmp

  • git diff SHA1 SHA2 -- <filename> 比较两个历史版本之间的差异

关于“linux中git命令有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux中git命令有什么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux中git命令有什么用

这篇文章将为大家详细讲解有关linux中git命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言因为结合了开发中可能遇到的场景,篇幅较长,不过我觉得很有助于你理解 git 的运作机制,而不是死
2023-06-09

linux中GIT命令怎么用

小编给大家分享一下linux中GIT命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!设置用户信息这应该是安装完 git 的***步。我们将添加用户信息 (
2023-06-16

linux中Git常用命令有哪些

小编给大家分享一下linux中Git常用命令有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Git重要概念master head每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。在Git里,有个分支叫主分
2023-06-16

Linux命令中的cat命令有什么用

今天给大家介绍一下Linux命令中的cat命令有什么用。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。cat命令的用途是连接文件或标准输入并打印。这个命令常用来
2023-06-28

linux中gzip命令有什么用

这篇文章给大家分享的是有关linux中gzip命令有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名
2023-06-09

linux中chgrp命令有什么用

这篇文章主要介绍linux中chgrp命令有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理。可以使用chgrp指令取变更文件与目录所属群组,这种
2023-06-09

linux中diff命令有什么用

这篇文章主要为大家展示了“linux中diff命令有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中diff命令有什么用”这篇文章吧。这又是一个文件比较命令,熟练掌握会节省你很多
2023-06-09

Linux中有什么常用命令

这篇文章将为大家详细讲解有关Linux中有什么常用命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动
2023-06-15

Linux中nohug命令有什么用

这篇文章主要介绍了Linux中nohug命令有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux后台运行命令cron和crontab、at和&都是在账户登录时运行
2023-06-16

Linux中fsck.ext2命令有什么用

这篇文章主要介绍Linux中fsck.ext2命令有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux fsck.ext2命令用于检查文件系统并尝试修复错误。当ext2文件系统发生错误时,可用fsck.e
2023-06-27

Linux中hexdump命令有什么用

小编给大家分享一下Linux中hexdump命令有什么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!hexdump命令一般用来查看”二进制”文件的十六进制编码,从手册上查看,其查看的内容还要很多,诸如:ascii, de
2023-06-27

Linux中mlabel命令有什么用

这篇文章将为大家详细讲解有关Linux中mlabel命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux mlabel命令用于设定磁盘的标签 (Label)。如果磁盘上设定过标签,mlab
2023-06-27

Linux中sync命令有什么用

这篇文章主要为大家展示了“Linux中sync命令有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中sync命令有什么用”这篇文章吧。Linux常用命令sync命令 用于强制被改
2023-06-28

Linux中stat命令有什么用

小编给大家分享一下Linux中stat命令有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux常用命令stat命令 用于显示文件的状态信息。stat命
2023-06-28

Linux中sleep命令有什么用

这篇文章主要为大家展示了“Linux中sleep命令有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中sleep命令有什么用”这篇文章吧。Linux常用命令sleep命令 主要用
2023-06-28

Linux中shuf命令有什么用

这篇文章主要介绍了Linux中shuf命令有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux常用命令shuf用于把输入行按随机顺序输出到标准输出。shuf产生随
2023-06-28

Linux中seq命令有什么用

这篇文章主要介绍了Linux中seq命令有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux常用命令seq命令 用于产生从某个数到另外一个数之间的所有整数。seq
2023-06-28

Linux中quotacheck命令有什么用

这篇文章主要为大家展示了“Linux中quotacheck命令有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中quotacheck命令有什么用”这篇文章吧。Linux常用命令q
2023-06-28

Linux中pfctl命令有什么用

小编给大家分享一下Linux中pfctl命令有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux常用命令pfctl命令 是PF防火墙的配置命令,PF防
2023-06-28

Linux中ntpdate命令有什么用

这篇文章主要介绍Linux中ntpdate命令有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux常用命令ntpdate命令 是用来设置本地日期和时间。它从指定的每个服务器获得了一些样本,并应用标准 NT
2023-06-28

编程热搜

目录