#explainlikeimfiveGit基础知识 – 您唯一需要的介绍

这篇文章来自我的博客,因此请务必查看更多最新内容。

Git是一个版本控制系统(VCS),可能是所有程序员都知道的。它使您可以更轻松,更直观地管理项目,文件和更改。但是,由于它是一个庞大而复杂的系统,因此对编程不熟悉的人可能很难学习它。设置回购是一个简单的部分 – 它之后的东西可能会感觉有点棘手。这就是为什么在今天的帖子中,我们将从头开始讨论Git的基本概念和功能我们将探索您需要了解的所有信息,以便每天最好地利用Git。让我们开始吧

版本控制系统

让我们首先了解Git背后最基本的概念,这个概念通常被视为已被授予 – 版本控制系统(VCS)。它是什么以及为什么Git实际上是其多重实现之一?用一个例子来解释它 – 假设您只使用一个文件创建一个项目 – 为简单起见。在这种情况下,版本控制可帮助您记录和存储对文件所做的更改。每次更改文件中的内容并保存时,都会进行更改。 VCS还使您能够为更改添加注释,使事情井然有序,以及稍后知道在给定更改发生之前您希望将文件返回到哪个状态。

因此,描述了您可以在以后回归的变化 – 简单。但是,假设您希望与您的朋友一起处理您的项目。由于您只有一个文件可以处理并在不同时间执行,因此管理此类开发可能会有点问题。别担心 – VCS也可以在这里提供帮助它有助于跟踪特定用户随时间对特定文件所做的更改,以便您稍后决定如何在称为合并的过程中将它们合并为一个。并且,通过这种方式,VCS现在可以存储有关特定更改,提交时间以及用户执行操作的数据。

上面介绍的概念是VCS背后的基本思想。这就是Git和其他类似工具的核心。当然,Git还有更多的数据存储,但我希望你能得到这个想法。

混帐

现在,让我们回到Git本身。正如我所提到的,它只是最流行和最广泛使用的VCS之一。它的受欢迎程度肯定是其一些最重要优势的结果。首先,它是分布式的,这意味着您实际上没有活动的Internet连接,只需在本地计算机上运行Git即可。这要归功于它的架构和性能。与其他VCS实现相比,在我们的思考过程中,让我们使用Git相对容易。

入门

随着理论的出现,现在是时候使用Git了。为了简单起见,我们将在本地机器上执行此操作,因此,如果您还没有,则必须安装Git。大多数Linux发行版通常都带有内置的Git,在其他情况下,您可以从其官方网站下载(并查看文档BTW)。

git init projectName 光盘 项目名 

上面的命令将在指定的目录中初始化Git项目 项目名 (如果不存在则将创建)。如果未指定任何名称,将在当前目录中创建Git repo。毕竟,我们进去了

在我们进一步讨论之前,我想做一个快速免责声明。事实上,在实际项目中,Git项目通常存储在GitHub等平台上,使用GUI Web客户端或类似GitKraken。在这里,为了简单起见,我们只使用命令。那是因为我认为这是掌握基本概念和相关命名的最简单方法。稍后可以将其应用于仅使事情变得更简单的GUI工具。

证书

如前所述,Git存储有关提交给定更改的用户的信息。但是,为此,它需要有关于贡献者的一些额外信息。这就是为什么,在我们开始处理任何文件之前,我们首先必须设置我们的凭据 – 在大多数情况下,名称和电子邮件就足够了。

git config - 全球 用户名 “用户” git config - 全球 user.email “user@user.com” 

使用上述命令,我们可以全局设置我们的名称和电子邮件地址,这意味着它将用于我们从我们的机器进行的任何提交。 用户名 设置用户的名称(一个用于在线使用)和 user.email – 他的公开电子邮件。照这样说, git config 命令通常用于在内部设置Git使用的不同变量,但是这里(在大多数情况下)名称和电子邮件是我们需要继续前进的。

使用文件

假设您已经拥有或刚刚创建了一个新文件,其中包含您要提交给Git存储库的一些内容。这是你如何做到这一点:

git add  

使用上面的命令,我们将所有文件(您可以使用整个目录或逐个文件指定)添加到某个容器中,即我们进行更改,使Git注意到它们已被更改 – 创建,更新或删除。此步骤通常由现代代码编辑器自动管理,例如内置Git支持的VS Code。您必须知道我们的更改尚未提交。就目前而言,Git只知道他们已经被制作出来了。要实际提交它们,意味着保存到我们的Git repo历史记录,我们将不得不使用另一个命令:

git commit -m “提交消息” 

git commit 命令不需要将任何文件或目录作为参数,因为之前的add命令已经知道它们。相反,在这里我们可以传递一些关于我们当前提交本身的其他信息。在这个例子中,我使用了许多有用的选项之一(有太多可以覆盖所有这些选项) – -m (消息)实际上将一些文档添加到我当前的提交中,就像我们之前讨论过的那样。一个很好的技巧是,如果你有一些很长的消息要写,你可以使用多个-m选项,因为它们将被连接成单独的段落。但是,这肯定是GUI使事情变得更容易的一个例子。

合作

虽然使用Git绝对可以帮助您跟踪您的个人项目,但在协作中使用时可以体验到真正的力量。很好的例子是GitHub和Git支持的其他平台上提供的无数开源项目。让我们看看它是如何工作的……

分行

多个人在同一个项目上工作的问题在于管理重叠的变更,同时不会相互干扰。 Git也有解决方案 – 它被称为分支

分支,认为Git是一棵树,帮助人们有他们独立的版本来工作。分支可以基于彼此,主要的一个称为“主”,在您的第一个“无分支”提交之后创建。

git branch -C 我的分支 

您可以使用管理分支机构 git branch 带有一些额外选项的命令。这些例子包括 -C-m-d,分别代表复制,移动和删除。前两个选项,使命令接受两个参数,默认情况下使用当前分支。如果您因任何原因想要一个全新的分支,则不必使用任何其他选项。

签出

创建新分支后,您必须“移动”到给定分支,才能将您现在提交的所有操作应用到它。要将当前分支更改为另一个分支,您需要使用 git checkout 命令。

git checkout my-branch 

合并

最后,由多个人完成的更改需要在某种程度上合并在一起。为此,Git提供了一个直观的命令 – git merge。通过简单的调用,您可以将提供的分支与当前分支合并。为了简化过程,Git会在文件更改之间每次发生冲突时询问您,或者在不需要时自动进行。

git merge my-branch 

远程

虽然Git在本地工作非常好,但在协作时,需要将您的存储股票储在每个项目协作者都可以访问它的地方,以使开发过程更容易。为此,您需要一个存储在Git服务器或GitHub或GitLab平台上的远程存储库。

克隆

访问远程仓库的最常用方法是克隆它。为此,你可以使用众所周知的 混帐克隆 命令。

git clone https://github.com/vuejs/vue.git 

这样的命令自动创建所有远程分支和检出主分支(通常命名为“master”)。

远程

如果您想再使用遥控器,可以使用远程命令。

git remote 

如果没有提供其他子命令或选项,远程命令将列出远程起源的所有名称,例如克隆后,唯一可访问的远程名称是“origin”。

如果要将给定的远程数据库添加到某个现有存储库,而不是仅仅克隆它,则可以使用 git远程添加 命令。只需为您的新遥控器传递一个简短的名称,它的原始网址就完成了

git remote add vue https://github.com/vuejs/vue.git 

推拉

要从远程源访问数据,您需要先获取它。命名的简单命令 git fetch

git fetch 

作为参数,您可以传递您想要获取的远程源的名称。默认情况下,它等于“origin”。

通过使用 git fetch 您检索其他协作者提交的更改和分支。然后,您必须(很可能)通过使用将其与您自己的本地更改合并 git merge。事实证明,这是常见的事情,Git提供了一种快捷方式 git pull 命令,自动获取远程分支并将其与当前本地分支合并。

git pull 

如果您无法对其进行更改,则访问远程来源将毫无意义。要将更改从当前分支推送到远程分支,您可以使用 git push 命令。

git push origin master 

git push 采用两个参数 – 远程原点的第一个点由其名称命名,第二个选择远程原点的分支以推送更改。很直白,是吧?

就个人而言,我认为开始使用远程起源对初学者来说可能有点困难。重要的是要看到遥控器和分支之间的明显区别,这可能有点困难。请记住,遥控器是……远程并且在其中包含分支。

变基

如果您已经对本地副本进行了多次提交,则可能存在这样的情况:您可能希望将所有这些提交应用于当前代码库,该代码库在此期间由其他协作者更改。那是在哪里 git rebase 命令进来。它重新定位你在给定分支中完成的所有提交(默认为当前的提交)并将它们应用于主要提交之上。

git rebase 

信息

我们知道Git存储的数据不仅仅是文件,因此,我们如何访问它? Git也提供了很多有用的命令可能最重要的是 git状态。通过使用它,您可以获得有关Git仓库当前状态的基本信息,例如当前暂存的文件。您还可以将路径(文件或目录)作为参数传递以限制结果。

git状态 

git log另一方面,输出所有变化的历史。这包括一些重要的数据,如提交ID,这在将来非常有用。由于此命令可能非常庞大,因此您始终可以传递可选路径参数来限制结果。

git log 

当访问前面提到的提交ID或分支名称等时,您可以使用它 git diff 命令显示当前工作树和给定实体之间的实际差异。它非常有用并且被所有Git GUI工具使用。

git diff my-branch 

最后,除了分支,提交和遥控器之外,Git还为您提供标签。与分支不同,它们不是用于处理并发工作流,而是用于记录项目的给定状态。它对于标记代码库的不同构建,版本和发行版很有用。您的标签可以有自定义名称,可以区分 git diff 并创建 git标签 从当前工作树。

git标签自定义标签 

变化

藏匿处

当然,除了添加,存储和检索上述信息的所有优点之外,Git还可以让您做更多,更多。这包括明显的更改,如删除和编辑,但也包括创建stashes。你可以使用它们 git stash 命令。它们允许您创建当前工作(WIP)的临时记录,以便稍后返回到它。

git stash 

上面最基本的命令会创建一个新的存储,以后可以看到:

git stash list 

要恢复给定的存储(即使在不同的提交之上),您还需要使用 git stash适用 命令并通过引用ID,整个reflog语法或以其他方式指定存储(请参阅文档)。有关存储引用和ID的信息,您需要查看存储的输出 git stash list 命令。

git stash apply stash @{0} #相同 git stash适用0 

通常,stashes提供了一种很好的方法来创建当前工作流的“脏”快照,只是稍后再回过头来看。它们也可以被广泛操纵,因为,通过上面的命令,我们几乎没有划伤表面。

重置并恢复

当然,您可以暂时更改文件,甚至删除文件 git add并以可预测的方式正常承诺。但是,您最终可能需要更改Git本身的某些方面,而不是更改文件。我的意思是想要,例如取消你的分阶段变化或类似的事情。

最简单的方法是将文件重置为以前的状态,在此过程中有效地取消暂存。为此,我们将使用 git重置 命令将取消所有当前暂存的更改。当然,您还可以以路径的形式为其提供参数,以使您的操作更具针对性,或者使用提交ID将文件重置为给定状态。

git重置 

Git证明真正有用的另一个时刻是你需要及时回归并恢复你以前做过的一些提交。明显 git revert 命令允许您只需指定提交ID即可。然后,可选地,它将引导您完成恢复冲突内容的过程。

git revert fc95eb54362878829042ac2c6b3a34bd208b2c04 #example commit ID 

请记住,提交存储更改特定于不同文件 – 包括不同代码行(LOC)的位置和其他详细信息。这样,如果在这段时间内完成了更多的提交,则还原给定的提交可能仍然会导致之前的文件不同。

注意事项

随着Git基础知识的快速破解,我想指出2,在我看来,关于Git的非常重要的细节。

首先,您需要知道,与许多其他VCS实现相比,Git专注于内容而不是文件。这意味着Git可以更好地了解您的代码。它不仅跟踪文件的位置,还跟踪其中LOC的位置。在使用Git时,这通常被认为是理所当然的,但你必须知道它只是一个额外且非常有用的功能。

其次,您不应该将Git和其他任何其他VCS视为备份形式。当然,它们允许您存储文件的过去版本,但这是存储这些更改的精确度,使VCS独一无二。你知道是谁,为什么以及何时做出改变。这使得Git更类似于日记帐而不是单独备份。

想要更多?

Git是一个设计精良且有趣的VCS实现。这对于初学者来说非常容易掌握,同时仍然为高级专业用户提供了大量功能。话虽如此,即使在本文中做了相当全面的介绍,Git中仍然有无数的选项,命令和许多不同的商品。在项目越来越大的世界中,VCS是一项要求。值得庆幸的是,Git只需要更好,更好,更快,更无缝和普遍赞赏的选择。

那么,你喜欢这篇文章吗?如果你想在这个博客上以类似的形式因素或更多内容阅读更多关于Git的信息,请通知我。另外,请将您的想法留在下面的评测部分。和往常一样,如果您觉得它有用,请分享文章,并考虑在Twitter上关注我,在我的Facebook页面上查看我的个人博客。感谢阅读,祝你有个美好的一天

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/areknawo/git-basics-the-only-introduction-you-ll-ever-need-6d2 ,版权归作者所有,未经许可,不得转载
你可能还喜欢