Git 是任何使用代码的人的必备工具,无论您是软件开发人员、数据科学家、数据工程师还是机器学习从业者。它允许团队同时协作处理同一个项目,同时提供清晰的代码修改历史记录,使跟踪和管理更新变得容易。
在本文中,我将带您了解最常用的 Git 命令、它们的语法以及如何在日常工作中应用它们!
基本 Git 命令
使用 Git 的基本步骤包括创建存储库、复制现有存储库以及编辑代码。本节详细讨论这些基础 git 功能以及实现它们的语法。
需要安装 Git?按照本指南在你的系统上安装 Git 。
git init
该git init命令创建一个新的 Git 存储库实用指南或重新启动一个现有的存储库。
运行该命令后,当前目录将成为 Git 存储库,允许您跟踪其更改。它会.git在目录中添加一个隐藏文件夹,Git 将在其中存储与项目相关的所有元数据、版本历史记录和日志。
git 克隆
要将 Git 存储库从一个位置复制到另一个位置,我们使用git clone命令。它通常将现有存储库(包括日志和版本)从 GitHub 或 GitLab 等远程服务器复制到本地计算机。
步骤 1:导航到您要克隆的 GitHub 存储库,然后单击“代码”。
步骤 3:转到本地机器上要克隆此存储库的目录并执行以下命令:
git clone <copied_URL>
供电
git 状态
该git status命令向我们显示有关以下内容的详细信息:
已修改的文件(已更改但尚未暂存的文件)。
未跟踪的文件(Git 未跟踪的文件)。
暂存文件(已暂存并准备提交的文件)。
语法如下:git 添加
该git add命令将您的更改添加到暂存区。它告诉 Git,一旦用户运行提交命令,存储库就应该更新这些更改。
git add .:暂存对所有文件所做的更改。
git add <file_name>:仅包含对暂存区中特定文件所做的更改。
git 提交
命令git commit会将您所做的更改(或暂存的更改)保存到本地存储库。每次运行 时git commit,Git 都会在该点创建存储库的快照。这样您就可以在需要时回滚到上一次提交。
使用远程存储库
GitHub在其远程服务器上托管各种应用程序,允许开发人员跟踪和管理它们。在本节中,我们将了解如何使用 Git 命令提取、传输和与这些远程存储库交互。
想要了解 GitHub 的工作原理?从GitHub 概念简介开始,了解存储库、拉取请求和协作最佳实践。
git 远程添加
该git remote add命令在您的本地 Git 存储库和远程 Git 存储库之间创建连接,使您能够在它们之间推送和拉取更改:
git remote add <repo_name> <remote_url>
供电
<repo_name>:远程存储库的昵称(默认为“origin”)。
<remote_url>:远程存储库URL。
git push
该git push命令将远程存储库与本地存储库同步。运行此命令后,远程存储库将反映您在本地提交的所有更改。git push –force origin main
供电
上述命令会main用本地main分支覆盖远程存储库上的分支。使用时请小心,因为远程主分支可能会丢失其所有历史记录。
git pull
该git pull命令获取并合并远程存储库中的更改和本地存储库中的更改。
该git pull命令结合了两个命令:git fetch和git merge。
首先,git fetch从远程存储库检索所有更实用指南改,包括新提交、标签和分支。然后git merge执行并将这些更改集成到当前本地分支。
语法如下:
git pull origin feature-branch
供电
上述命令从feature_branch远程存储库中获取数据并将其提交到您当前的本地分支。
git 获取
该git fetch命令可让您在将远程存储库中的更改合并到本地之前对其进行检查。它会下载更改并将其更新到远程跟踪分支。对于那些不熟悉的人来说,远程跟踪分支是远程存储库分支的副本。
例如,以下命令下载远程存储库中的更改并在 下的远程跟踪分支中更新它们origin:
git fetch origin
供电
Git 中的分支和合并
Git 分支允许开发人员独立开发新功能或修复错误,而不会影响主存储库。更改准备就绪后,合并会将它们集成到主代码库中。让我们探索此过程中涉及的关键命令。
git 分支
该git branch命令列出、创建或删除分支。分支是存储库的另一个版本。
如果您正在为应用程序开发新功能,则可以创建新分 WhatsApp 号码数据 支并继续工作。更改准备就绪并经过测试后,您可以将此新分支合并到主分支。这样您就可以独立开发新功能,而无需直接干扰主线。
git branch:输出存储库中所有分支的列表。
git branch <branch_name>:创建一个名为“branch_name”的新分支。
git branch -d <branch_name>:删除名为实用指南“branch_name”的分支。
git 签出
git checkout命令可以做两件事:在分支之间切换或将文件恢复到以前的状态。
切换分支:在 git 2.23 之前,该git checkout branch_name命令用于从当前分支切换到另一个分支。但它不仅适用于从现有分支切换;您还可以创建新分支并切换到新分支。
以下命令创建一个名为“feature_branch”的新分支并切换到该分支:
git checkout -b feature_branch
供电
然而,在最新版本的 Git 中,git checkout被 替换为git switch恢复文件。
恢复文件:您可以使用以下命令放弃对文件所做的更改并将其恢复到以前的版本。
git checkout — <file-name>
供电
您还可以使用来自另一个分支的文件执行此操作,如下所示:
git checkout <branch-name> — <file-name>
供电
git 合并
如果您在新分支中完成了一些工作,则可以将其合并到主分支以git merge实现更改。 Git 通过两种方式执行合并:
快进合并:假设您从主分支创建了一个名为“feature_x”的新分支并对其进行了操作。如果自您创建“feature_x”以来主分支没有任何更新,那么 Git 不会将“feature_x”更改提交到主分支,而是会更新主分支以指向“feature_x”的最新版本。在这种情况下,不会创建新的合并提交。
三向合并:如果“feature_x”和主分支都有编辑,Git 会合并这些更改并在主分支上创建一个新的合并提交。
例如:供电
在提交时B,创建了功能分支C。即使在创建功能分支后,主分支仍有额外的提交E和G。因此,功能将合并到主分支中,并创建一个新的合并提交,M如下所示:git rebase
git rebase是另一种在分支之间整合变更的方法,但其工作方式与 不同git merge。 Merge 会保留主分支和功能分支的完整历史记录。而 Rebase 会覆盖提交历史记录,使其线性且干净。
此外,merge 需要额外的合并提交,而 rebase 不会创建任何新的提交。Git rebase 执行两个步骤:
切换到功能分支
重新定位到主要部分。
例如:
步骤 2:执行:通过将提交、、作为、和git rebase main重新应用到主分支上,将整个功能分支移至主分支,并将其置于主分支上的最新提交之上。这将创建如下线性提交历史记录:CDFC’D’F’G
A—B—E—G—C’—D’—F’ (main)
供电
由于合并和重新定基操作经常被混淆,这实用指南里总结了一下它们之间的区别:
合并
狐狸
它保留了两个分支的整个提交历史。
它覆盖提交历史以使其呈线性。
创建了额外的合并提交。
没有创建额外的提交。
分支结构在历史记录中可见。
它使提交历史看起来像一条直线。
使用它来跟踪每个分支的提交历史,包括合并的时间表。
当您需要清晰且易于理解的提交历史时使用它。
想要了解有关使用远程分支的更多信息?在本分步教程中了解如何使用远程分支签出和跟踪远程分支。git checkout
Git 历史记录和撤消更改
Git 提供了几个命令来查看历史记录并撤消开发不同阶段的更改。相关命令在此处讨论。
git 日志
该git log命令显示当前分支的完整 关于此主题的推荐文章 提交历史记录。它包括四个关键字段:提交、作者、日期和提交消息。
git 提交历史
git 提交历史
提交:唯一 ID。
作者:姓名和电子邮件。
日期:提交更改的时间戳。
提交信息:提交的描述。
git diff
显示git diff存储库不同状态之间实用指南的差异 — — 无论您正在将当前目录与暂存区进行比较,还是将暂存区与最后一次提交进行比较,甚至是两个文件或分支,无论您指定什么。
git diff- 显示当前工作目录和暂存区之间的差异。
git diff — cached:显示暂存区和最后一次提交之间的差异。
git diff commit1 commit2commit 1-和之间的区别commit 2。
git diff branch1..branch2branch 1- 比较和之间的差异branch 2。
git 重置
git reset命令可让您通过将当前 HEAD 重置为特定的先前状态来撤消更改。要将 HEAD 移至上一次提交,您可以使用三种变体:“soft”、“mixed”和“hard”与 reset 命令一起使用。
软:返回到上一次提交但保留当前更改,以便您在需要时重新提交它们。
git reset –soft HEAD~1
混合:返回上一个提交并从暂存区移除当前提交更改。但是,这些更改不会影响您的工作目录。
git reset –mixed HEAD~1
硬:这将指向以前的提交,同时从工作目录和暂存区中删除当前提交更新。
git reset –hard HEAD~1
需要撤消 Git 中的更改?在此git resetgit revert详细指南中探索和之间的区别。
Git 存储和清理
使用 Git 时,您可能需要暂时搁置更改而不提交它们,或者清理使存储库杂乱的不必要文件。这时 Git 存储和清理命令就派上用场了。
git 存储
假设您想要移动到先前的状态,但不想提 新加坡电话列表 交当前进度;您可以使用git stash。这会暂时保存未提交的更改,并将工作目录重置为上次提交的状态。
git 存储弹出
如果你过去存储了一些更改,并希望将它实用指南们包含在工作目录中,请使用命令git stash pop。这会将最新的存储更改应用到当前目录并将其从存储列表中删除。
git 清理
该git clean命令会从 Git 存储库中删除未跟踪的文件。git clean -n在执行 clear 命令之前,使用命令预览将要删除的内容!
想要清理 Git 历史记录?通过此Git 压缩教程学习如何将多个提交合并为一个。
Git 配置和用户设置
Git 允许你在不同级别配置用户设置。让我们在这里探索它们。
git 配置
该git config命令允许您根据需要自定义 Git 设置。您可以在三个级别配置设置:本地、系统和全局级别。
系统级别:这是最广泛的配置级别,具有根级别访问权限。
全局级别:此级别的配置应用于当前用户的所有存储库。
本地级别:可以在此级别自定义与当前 Git 存储库相关的设置。
以下是一些常用git config命令:
git config -list:显示各级 Git 设置。
git config –global user.name “Your_name”:将系统上所有存储库的 Git 用户名设置为“Your_name”。
git config –global user.email “[email protected]”:设置系统上所有存储库的电子邮件地址。
我们知道,初始化 Git 存储库时
Master 是默认的主分支。但您可以使用以下命令将其重命名为您想要的任何名称:
git config –global init.defaultBranch “srujana_master”
供电
在上面的命令中,我们在全局级别(对于系统中的所有存储库)用“srujana_master”替换了默认的主分支。
您可以应用其他全局级别设置。例如,要将默认文本编辑器更改为 VS code,请运行以下命令:
使用 Git 的最佳实践
有效使用 Git 不仅仅是跟踪更改,它还涉及维护干净、结构化和协作的工作流程。遵循最佳实践有助于确保您的存储库保持井然有序、您的提交历史记录有意实用指南义并且您的开发过程顺利进行。
以下是使用 Git 时应养成的一些关键习惯:
经常提交:使用 Git 等版本控制的一个主要目的是有效地跟踪一段时间内的变更。当您单独提交每个变更而不是同时更新多个变更时,以后更容易了解每次提交中修改了什么。
提交时提供清晰的消息:每次提交时,都提供一条清晰的消息来描述提交的内容。下次跟踪提交时,就可以更轻松地了解每次提交对代码所做的更改。
使用分支:对于任何新功能或错误修复,创建一个分支,对其进行处理并合并。这是将新开发工作与主项目分离的最佳实践。
利用 .gitignore:.gitignore 文件 包含不需要跟踪的项目相关文件和目录。这些文件和目录通常包括自动生成的文件、构建工件、日志、临时文件和平台特定文件。忽略它们将避免不必要的日志和跟踪版本,从而使您的历史记录保持干净。
结论
Git 是一款功能强大的工具,可用于跟踪更改、与他人协作以及维护结构良好的开发工作流程。在本文中,我介绍了基本的 Git 命令和最佳实践,以帮助您更有效地管理项目。
需要一份 Git 速查表来指导未来的项目?使用此Git 速查表随时掌握基本命令!
使用 Git 的最佳实践
有效使用 Git 不仅仅是跟踪更改,它还涉及维护干净、结构化和协作的工作流程。遵循最佳实践有助于确保您的存储库保持井然有序、您的提交历史记录有意义并且您的开发过程顺利进行。
以下是使用 Git 时应养成的一些关键习惯:
经常提交:使用 Git 等版本控制的一个主要目的是有效地跟踪一段时间内的变更。当您单独提交每个变更而不是同时更新多个变更时,以后更容易了解每次提交中修改了什么。
提交时提供清晰的消息:每次提交时,实用指南都提供一条清晰的消息来描述提交的内容。下次跟踪提交时,就可以更轻松地了解每次提交对代码所做的更改。
使用分支:对于任何新功能或错误修复,创建一个分支,对其进行处理并合并。这是将新开发工作与主项目分离的最佳实践。
利用 .gitignore:.gitignore 文件 包含不需要跟踪的项目相关文件和目录。这些文件和目录通常包括自动生成的文件、构建工件、日志、临时文件和平台特定文件。忽略它们将避免不必要的日志和跟踪版本,从而使您的历史记录保持干净。