希望用更加口语化的语言向大家讲述git 的魅力
1、Git-stash (贮存)
想象一下,你正在写一封重要的邮件,但突然你的老板告诉你需要立即处理另一个紧急任务。你还没完成邮件,不想丢失已写的内容,但你也需要一个干净的工作空间来处理新的任务。在这种情况下,Git 的 stash 功能就像是一张干净的桌子,你可以把邮件暂时放到一边(stash),清理出空间来处理紧急任务,待任务处理完毕后,再把邮件拿回来(apply)继续写。
在 Git 中,当你正在一个分支上工作,但突然需要切换到另一个分支去做一些工作时,stash 功能就能派上用场。
如何使用 Git 的 Stash 功能:
-
保存工作进度:
-
假设你正在修改一些文件,但这些更改还没准备好提交,此时你需要切换到其他分支。
-
运行
git stash
,Git 会保存你的当前更改,并让你的工作目录回到修改之前的状态,就好像你什么都没做一样。
-
-
查看保存的内容:
-
你可以通过
git stash list
查看你保存起来的工作进度。 -
这就像查看你所有暂时放到一边的邮件清单。
-
-
恢复工作进度:
-
完成其他任务后,你可以用
git stash apply
把刚才保存起来的更改恢复回来,继续之前的工作。 -
这就像把之前放到一边的邮件拿回来继续写。
-
-
删除保存的内容:
-
一旦你恢复了工作进度并完成了工作,你可能不再需要保存的进度了。
-
使用
git stash drop
可以删除你不再需要的保存内容。
-
Stash 使用场景:
-
当你正在进行一个大的更改,但突然需要切换到另一个分支去处理一个紧急问题时。
-
当你正在尝试一些实验性的更改,但还没准备好提交这些更改时。
注意事项:
-
Stash 是暂时的,它不是永久保存你更改的方式。所以一旦你用完它,就应该清理掉。
-
Stash 只保存了被 Git 跟踪的文件的更改,如果有些文件是新创建的并且还没有被 Git 跟踪,它们不会被自动保存到 stash 中。
2、Git Clean(清理)
如果你的项目目录中有很多由编译过程、日志文件或其他原因产生的未跟踪文件,你可能想清理它们。
-
使用场景:清理工作目录中的未跟踪文件(例如,编译生成的文件或临时文件)。
-
如何使用:
-
查看将要删除的文件:在删除任何内容之前,先运行
git clean -n
或git clean --dry-run
。这会显示哪些文件会被删除,但实际上不会删除它们。 -
删除文件:使用
git clean -f
来删除未跟踪的文件。如果还要删除目录,可以加上-d
选项。 -
慎重操作:
git clean
是一个危险的命令,因为它会删除文件。在使用它之前,请确保你不会丢失重要的数据。
-
小白提示
-
备份数据:在使用
git stash
或git clean
之前,请确保重要数据已经备份。 -
小心使用
git clean
:这个命令会删除文件,一旦删除就不能恢复。 -
逐步操作:特别是对于初学者,一步步地使用命令,并检查每一步的结果,可以帮助你更好地理解这些命令的工作方式。
3、Git Grep
假设你有一个大型项目,里面有成百上千的文件。现在你想要找出所有包含特定单词或代码的文件。这就像是在一个巨大的图书馆里找一本特定的书,但是 Git 的 grep
命令可以帮你快速找到它。
-
基本使用:运行
git grep "搜索词"
,Git 会在你的项目中查找包含这个“搜索词”的地方,并告诉你它出现在哪些文件中。 -
显示行号:如果你还想知道这个“搜索词”在文件中的具体位置(行号),你可以使用
git grep -n "搜索词"
。 -
统计次数:如果你只是想知道这个“搜索词”在每个文件中出现了多少次,使用
git grep -c "搜索词"
。
4、Git Log 日志搜索
现在假设你想了解项目中某个特定功能(比如一个函数)是如何随时间变化的,或者是谁在什么时候做了改动。这就像是想要追踪一部小说中一个角色的所有出场和发展。
-
内容变更搜索:使用
git log -S "功能名"
,Git 会显示所有添加或删除这个特定“功能名”的提交记录。这有助于你找出何时及由谁引入或移除了某个功能。 -
行日志搜索:如果你想深入到具体的代码行级别,看看某个特定函数或代码段是如何变化的,可以使用
git log -L :[函数名]:[文件名]
。Git 会告诉你这个函数或代码段的每一次更改。
小结
想象一下,你有一个巨大的照片集,而这些 Git 命令就像是强大的搜索引擎,可以帮助你快速找到你需要的照片。无论是找到特定的单词、代码,还是追踪某个功能的变化历史,这些命令都能让你的工作变得轻松许多。这对于管理大型项目和代码库是非常有帮助的。
5、Git 子模块:
什么是 Git 子模块?
想象一下,你在做一个大的学校项目,这个项目需要用到很多不同的部分(比如一个数学模块,一个艺术模块等)。在 Git 的世界里,这些不同的部分可以是不同的小项目,称为“子模块”,它们可以被组合在你的主项目里。
如何添加子模块?
-
添加步骤:就像你在主项目里添加一个文件夹一样,你可以在 Git 中添加一个子模块。假设你的项目叫做“学校项目”,你想添加一个叫做“数学模块”的小项目作为子模块。你需要在“学校项目”的 Git 目录下执行一个命令,比如:
git submodule add
https://example.com/math-module.git
。 -
记录信息:添加子模块后,Git 会在一个叫做
.gitmodules
的特殊文件里记录下这个子模块的信息,比如它在哪里可以找到(它的网址)。
如果我克隆了一个包含子模块的项目怎么办?
当你克隆一个包含子模块的项目时,Git 不会自动下载这些子模块的内容。你需要额外告诉 Git 去获取它们:
-
初始化子模块:首先,你需要告诉 Git 关于这些子模块的信息。这通过运行
git submodule init
来完成。 -
下载子模块内容:然后,你需要实际下载这些子模块的内容。这通过运行
git submodule update
来完成。
更新子模块
如果子模块有更新(比如,数学模块有了新的章节),你可以通过运行 git submodule update --remote
来获取最新的内容。
总结
Git 子模块就像是项目中的小项目,你可以在你的主项目中添加、更新和管理它们。这对于组织大项目非常有用,特别是当你需要使用其他地方的代码时。
6、Git Bundle 打包
想象一下,你有一个项目保存在 Git 仓库中,现在你想把这个项目(或者项目的一部分)传给别人,或者带到一个没有网络的地方继续工作。Git 的 git bundle
命令可以帮你做到这一点。它会把你选择的项目内容打包成一个文件,这个文件就像一个便携版的项目仓库。
如何使用 Git Bundle?
-
打包项目:
-
你可以使用一个命令把整个项目或项目的一部分打包成一个文件。
-
例如,命令
git bundle create repo.bundle HEAD main
会创建一个名为repo.bundle
的文件,里面包含了你项目的主要部分。
-
-
查看打包的文件:
-
这个
repo.bundle
文件就像是你的项目的一个压缩包,你可以在任何地方打开它。
-
如果你拿到了一个 Git Bundle 文件怎么办?
如果有人给你一个这样的 Git Bundle 文件,你可以像克隆普通 Git 仓库那样克隆这个文件。
-
从 Bundle 文件克隆:
-
使用命令
git clone <bundle文件名> <克隆的目录名>
来创建项目的副本。 -
比如
git clone repo.bundle repo
就会从repo.bundle
文件创建一个名为repo
的项目副本。
-
如果只想传送最近的更新怎么办?
有时候你只想分享项目的最近几次更改,而不是整个项目。
-
选择要分享的内容:
-
首先,使用
git log
命令找出你想分享的更新。 -
比如,
git log --oneline origin/main..main
会显示从origin/main
到main
分支的所有更新。
-
-
打包这些更新:
-
然后,使用
git bundle create
命令把这些更新打包成一个文件。 -
例如,
git bundle create commits.bundle main ^5de18d5
会创建一个包含这些更新的commits.bundle
文件。文章来源:https://www.toymoban.com/news/detail-821876.html
-
总结
git bundle
是一个非常有用的工具,特别是在需要在没有网络的环境下分享或携带 Git 项目时。它允许你将项目的整体或部分内容打包成一个文件,然后在任何地方解压和使用。文章来源地址https://www.toymoban.com/news/detail-821876.html
到了这里,关于别样的git学习--大白话学git的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!