别样的git学习--大白话学git

本文介绍了Git中的几个关键功能:Stash用于临时保存工作状态,GitClean用于清理未跟踪文件,GitGrep用于搜索文件内容,GitLog用于查看提交历史,Git子模块用于项目结构管理,以及GitBundle用于打包项目。这些工具在大型项目和代码管理中极具价值。
摘要由CSDN通过智能技术生成

希望用更加口语化的语言向大家讲述git 的魅力

1、Git-stash (贮存)

想象一下,你正在写一封重要的邮件,但突然你的老板告诉你需要立即处理另一个紧急任务。你还没完成邮件,不想丢失已写的内容,但你也需要一个干净的工作空间来处理新的任务。在这种情况下,Git 的 stash 功能就像是一张干净的桌子,你可以把邮件暂时放到一边(stash),清理出空间来处理紧急任务,待任务处理完毕后,再把邮件拿回来(apply)继续写。

在 Git 中,当你正在一个分支上工作,但突然需要切换到另一个分支去做一些工作时,stash 功能就能派上用场。

如何使用 Git 的 Stash 功能:

  1. 保存工作进度:

    1. 假设你正在修改一些文件,但这些更改还没准备好提交,此时你需要切换到其他分支。

    2. 运行 git stash,Git 会保存你的当前更改,并让你的工作目录回到修改之前的状态,就好像你什么都没做一样。

  2. 查看保存的内容:

    1. 你可以通过 git stash list 查看你保存起来的工作进度。

    2. 这就像查看你所有暂时放到一边的邮件清单。

  3. 恢复工作进度:

    1. 完成其他任务后,你可以用 git stash apply 把刚才保存起来的更改恢复回来,继续之前的工作。

    2. 这就像把之前放到一边的邮件拿回来继续写。

  4. 删除保存的内容:

    1. 一旦你恢复了工作进度并完成了工作,你可能不再需要保存的进度了。

    2. 使用 git stash drop 可以删除你不再需要的保存内容。

Stash 使用场景:

  • 当你正在进行一个大的更改,但突然需要切换到另一个分支去处理一个紧急问题时。

  • 当你正在尝试一些实验性的更改,但还没准备好提交这些更改时。

注意事项:

  • Stash 是暂时的,它不是永久保存你更改的方式。所以一旦你用完它,就应该清理掉。

  • Stash 只保存了被 Git 跟踪的文件的更改,如果有些文件是新创建的并且还没有被 Git 跟踪,它们不会被自动保存到 stash 中。

2、Git Clean(清理)

如果你的项目目录中有很多由编译过程、日志文件或其他原因产生的未跟踪文件,你可能想清理它们。

  • 使用场景:清理工作目录中的未跟踪文件(例如,编译生成的文件或临时文件)。

  • 如何使用:

    • 查看将要删除的文件:在删除任何内容之前,先运行 git clean -ngit clean --dry-run。这会显示哪些文件会被删除,但实际上不会删除它们。

    • 删除文件:使用 git clean -f 来删除未跟踪的文件。如果还要删除目录,可以加上 -d 选项。

    • 慎重操作:git clean 是一个危险的命令,因为它会删除文件。在使用它之前,请确保你不会丢失重要的数据。

小白提示

  • 备份数据:在使用 git stashgit 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 的世界里,这些不同的部分可以是不同的小项目,称为“子模块”,它们可以被组合在你的主项目里。

如何添加子模块?
  1. 添加步骤:就像你在主项目里添加一个文件夹一样,你可以在 Git 中添加一个子模块。假设你的项目叫做“学校项目”,你想添加一个叫做“数学模块”的小项目作为子模块。你需要在“学校项目”的 Git 目录下执行一个命令,比如:git submodule add https://example.com/math-module.git

  2. 记录信息:添加子模块后,Git 会在一个叫做 .gitmodules 的特殊文件里记录下这个子模块的信息,比如它在哪里可以找到(它的网址)。

如果我克隆了一个包含子模块的项目怎么办?

当你克隆一个包含子模块的项目时,Git 不会自动下载这些子模块的内容。你需要额外告诉 Git 去获取它们:

  1. 初始化子模块:首先,你需要告诉 Git 关于这些子模块的信息。这通过运行 git submodule init 来完成。

  2. 下载子模块内容:然后,你需要实际下载这些子模块的内容。这通过运行 git submodule update 来完成。

更新子模块

如果子模块有更新(比如,数学模块有了新的章节),你可以通过运行 git submodule update --remote 来获取最新的内容。

总结

Git 子模块就像是项目中的小项目,你可以在你的主项目中添加、更新和管理它们。这对于组织大项目非常有用,特别是当你需要使用其他地方的代码时。

6、Git Bundle 打包

想象一下,你有一个项目保存在 Git 仓库中,现在你想把这个项目(或者项目的一部分)传给别人,或者带到一个没有网络的地方继续工作。Git 的 git bundle 命令可以帮你做到这一点。它会把你选择的项目内容打包成一个文件,这个文件就像一个便携版的项目仓库。

如何使用 Git Bundle?
  1. 打包项目:

    1. 你可以使用一个命令把整个项目或项目的一部分打包成一个文件。

    2. 例如,命令 git bundle create repo.bundle HEAD main 会创建一个名为 repo.bundle 的文件,里面包含了你项目的主要部分。

  2. 查看打包的文件:

    1. 这个 repo.bundle 文件就像是你的项目的一个压缩包,你可以在任何地方打开它。

如果你拿到了一个 Git Bundle 文件怎么办?

如果有人给你一个这样的 Git Bundle 文件,你可以像克隆普通 Git 仓库那样克隆这个文件。

  1. 从 Bundle 文件克隆:

    1. 使用命令 git clone <bundle文件名> <克隆的目录名> 来创建项目的副本。

    2. 比如 git clone repo.bundle repo 就会从 repo.bundle 文件创建一个名为 repo 的项目副本。

如果只想传送最近的更新怎么办?

有时候你只想分享项目的最近几次更改,而不是整个项目。

  1. 选择要分享的内容:

    1. 首先,使用 git log 命令找出你想分享的更新。

    2. 比如,git log --oneline origin/main..main 会显示从 origin/mainmain 分支的所有更新。

  2. 打包这些更新:

    1. 然后,使用 git bundle create 命令把这些更新打包成一个文件。

    2. 例如,git bundle create commits.bundle main ^5de18d5 会创建一个包含这些更新的 commits.bundle 文件。

总结

git bundle 是一个非常有用的工具,特别是在需要在没有网络的环境下分享或携带 Git 项目时。它允许你将项目的整体或部分内容打包成一个文件,然后在任何地方解压和使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值