Git - 术语



理解 Git 术语对于有效地使用 Git 作为版本控制系统至关重要。以下是基本 Git 术语的详细探讨,包括关键概念和命令的定义和解释。

Git 仓库

仓库(或称为 repo)是 Git 中的基本单元,所有项目文件及其修订历史都存储在其中。仓库有两种类型

Git 使用一个称为**仓库**的有组织的存储系统来处理项目的 文件和历史记录。

  • **本地仓库:**这是您本地机器上的仓库版本。它包括工作目录、暂存区和包含实际版本历史记录的 .git 目录。

  • **远程仓库:**这是托管在服务器或云服务(如 GitHub、GitLab 或 Bitbucket)上的仓库版本。远程仓库允许多个开发人员协作处理同一个项目。

工作目录

工作目录是您执行实际工作的地方。Git 跟踪的所有文件都保存在工作目录中。

  • Git 会监视这些文件,并为提交做好准备。

  • 从本质上讲,它充当工作区,在完成并提交到 Git 仓库之前,修改操作都在这里进行。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

暂存区(索引)

暂存区,也称为索引,是一个空间,您可以在将更改提交到仓库之前准备更改的快照。当您使用**>git add**时,更改会被移动到暂存区。这使您可以控制哪些更改包含在下次提交中。

提交

提交是项目在特定时间点的快照。它记录对仓库的更改,并包含描述所做更改的提交消息。每个提交都由唯一的哈希值(SHA-1 校验和)标识。命令**git commit**从暂存区的更改创建新的提交。

分支

Git 中的**分支**是从主项目分离出来的独立开发路径。

  • 它允许独立地处理项目功能或版本。

  • 创建、重命名、列出和删除分支是重要的操作。

  • 分支通过允许将它们拉取或推送到远程仓库,然后合并到主项目中,从而实现高效的版本控制和协作。

  • 分支由**git branch、git checkout 和 git merge**等命令管理。

合并

合并是将一个分支中的更改集成到另一个分支中的过程。当您将一个分支合并到另一个分支时,Git 会合并来自这两个分支的更改。命令**git merge**用于执行此操作。合并可能很简单,也可能需要解决冲突(如果更改重叠)。

变基

变基是合并的替代方法,它通过重放提交将一个分支中的更改集成到另一个分支上。**git rebase**命令将一个分支的提交应用到另一个分支上,从而创建线性历史记录。变基可以简化提交历史记录,但应谨慎使用,尤其是在共享分支上。

提交历史

提交历史记录是仓库中所有提交按时间顺序排列的列表。历史记录中的每个提交都由唯一的哈希值标识,并包含元数据,例如作者、日期和提交消息。命令**git log**显示提交历史记录,允许您查看过去的更改。

标签

标签是对特定提交的引用,用于标记仓库历史记录中的重要点,例如发布或里程碑。标签可以是轻量级的(简单的指针)或带注释的(包含其他元数据)。命令**git tag**用于创建和管理标签。

远程

远程是托管在服务器或云服务上的仓库版本。它允许与他人协作,通过提供一个集中的位置来共享更改。用于处理远程的常用命令包括**git remote、git fetch、git pull 和 git push**。

推送

在 Git 中,使用**git push**命令将本地仓库中的更改上传到远程仓库。

  • 使用**git push**命令,可以将本地分支中的提交移动到远程仓库中的指定分支。

  • 通常,该命令以分支名称和仓库名称作为输入。

  • 推送应谨慎进行,因为它有可能覆盖远程仓库中所做的更改。

拉取

在 Git 中,使用**git pull**命令从远程仓库获取并集成更改到本地仓库。

  • 使用**git pull**命令,从远程服务器检索更新并将其合并到您当前的工作分支中。

  • 拉取请求也是团队成员在功能分支中的更改准备好进行审查时获得通知的方式。

  • 在开发人员通过 GitHub 等远程服务发送拉取请求后,代码将被审查并合并到主分支中。

获取

**git fetch**命令从远程仓库检索更新,但不会将其合并到您的本地分支中。它下载新的提交、分支和标签,但不会更改您的工作目录。获取对于在集成更改之前查看更改很有用。

  • 它可以与**git fetch --all**等参数一起使用,以从仓库的所有分支获取更新并更新远程跟踪分支。

  • 在选择将更新合并到本地仓库之前,可以使用此命令查看来自远程仓库的更改。

冲突

当 Git 无法自动合并来自不同分支的更改时,就会发生冲突,因为它们重叠或相互矛盾。冲突需要手动解决,方法是编辑受影响的文件,然后暂存已解决的更改。冲突在包含冲突标记的文件中指示,可以使用工具或编辑器解决。

HEAD

Git 中的符号引用**HEAD**指的是活动分支或提交。

  • 它是当前正在检出的分支中最新的提交。

  • 通过使用诸如**git checkout**之类的命令来切换分支,**HEAD**会被更新为指向新分支的顶端,这反映了该分支最新的提交。

检出

Git 允许用户使用**git checkout**命令在仓库中的多个分支或版本之间导航。

  • 要切换到特定分支(例如 main 或 beta 分支),请使用**git checkout branch-name**。

  • 这使您可以从一个开发分支过渡到另一个开发分支,例如从稳定分支到 beta 版本,然后再返回。

克隆

个人可以使用**git clone**命令创建远程仓库的本地副本。

  • 通过运行**git clone repo**(其中“repo”是仓库地址),可以将完整的仓库(包括文件和历史记录)复制到您的本地计算机。

  • 要从 GitHub 等平台获取仓库的本地版本,我们必须使用此命令。

Fork

托管在远程服务器上的仓库的克隆称为 Git fork,它允许用户自由地试验和更改仓库,而不会对原始项目产生影响。

  • 通常,开发人员会 fork 一个仓库,以便他们可以独立地检查和修复更新。

  • 在进行更新(例如错误修复)后,您可以通过提交拉取请求来建议将您的更改合并回原始仓库。

  • 此过程在促进贡献和错误修复的同时,维护了主要项目的完整性。

状态

Git 中的**git status**命令提供了本地仓库当前状态的摘要。

  • 用户可以使用**git status**查看有关未跟踪文件、暂存更改和暂存区的信息。

  • 它对于记录已完成或仍需提交的修改以及了解工作树状态很有用。

DIFF

git diff 命令是一个灵活的工具,用于显示文件或提交之间的差异。

  • 可以显示索引和HEAD之间、提交之间以及工作目录和索引(暂存区)之间的更改。

  • 本质上,git diff 显示了已进行的更改以及已准备好提交的修改。

重置

git reset 命令用于通过调整存储库的状态来撤消更改。

  • 工作目录、索引(暂存区)和HEAD都可以重置。

  • git reset 可以采用三种主要形式

    • 软重置:通过将HEAD移动到之前的提交来保留工作目录和索引中的更改。

    • 混合重置:在移动HEAD并更新索引的同时保留工作目录中的更改。

    • 硬重置:删除所有修改并重置HEAD、索引和工作目录到之前的提交。

暂存

要临时存储工作目录中未提交的更改,请在 Git 中使用git stash 命令。

  • 因此,用户可以在不提交已完成工作的情况下处理多个项目或切换分支。

  • 将存储的修改应用回工作目录,允许我们在准备好时继续之前的工作。

  • 这对于管理正在进行的工作非常有用,避免弄乱提交历史记录。

反转

Git 中的git revert 命令用于创建新的提交,以反转先前提交的更改。

  • 它类似于撤消命令,因为它会添加一个新的提交来撤消指定提交所做的更改,而不是删除历史记录。

  • 此方法成功地反转了修改,同时保留了项目的历史记录。

子模块

子模块是嵌入在另一个存储库中的存储库。它允许您将外部存储库作为项目的一部分包含和管理。子模块使用git submodule add、git submodule update 和 git submodule sync 等命令进行管理。

追溯

git blame 命令显示谁最后修改了文件的每一行。它有助于跟踪更改并了解特定行的历史记录。追溯输出包括每行的提交哈希、作者姓名和日期。

樱桃采摘

Git 的git cherry-pick 命令可以将特定提交从一个分支应用到另一个分支,而无需合并整个分支。

  • 要从一个分支(例如 beta 分支)选择并应用特定更改到另一个分支(例如主项目分支),请使用git cherry-pick commit-id

  • 这有助于传输特定修改或更正错误,而不会影响分支中进行的其他提交。

索引

暂存区,也称为 Git 索引,充当存储库和工作目录之间的桥梁。

  • 它用于在提交更改之前准备和组织更改。

  • 当您将文件添加到暂存区时,这些文件将添加到索引中。

  • 一旦您提交,存储库就会记录索引修改并将HEAD更新为反映新的提交。

主分支

Git 中的mastermain 分支是用于开发的主要分支,也是存储库中的默认分支。

  • 克隆存储库时通常获得的第一个分支称为master(或main,因为许多存储库现在使用此术语以更具包容性)。

  • 项目的开发围绕此分支展开,该分支通常用于维护可靠的、可用于生产的代码。

Origin

在 Git 中,origin 是克隆项目所在的远程存储库的 URL 的简写别名。

  • 它通过提供本地别名而不是使用完整 URL 来简化对远程存储库的引用。

  • 这使得更容易执行诸如获取、推送和拉取远程存储库更改等操作。

.gitignore

Git 中的.gitignore 文件指示 Git 不应将哪些文件或目录添加到暂存区,而是忽略它们。

  • 它不会影响 Git 当前正在跟踪的文件;它仅适用于未跟踪的文件。

  • 这有助于控制添加到存储库的文件。

压缩

Git 中的压缩描述了将多个提交合并到单个提交中的过程。

  • 通常,交互式变基命令用于此目的。

  • 压缩有助于将类似的更改组织到单个、更易于管理的分支中,然后再将它们合并到主分支中。

  • 该过程涉及将来自多个提交的更改合并到单个文件中,然后将其添加到索引中。

git rm

要从工作目录、存储库和 Git 索引中删除文件,请使用git rm 命令。

  • 它确保从工作目录以及暂存区中删除跟踪的文件。

  • 在从版本控制中删除文件或不再需要的文件时,此命令非常有效。

广告