初学者的Git概念和工作流程

134 阅读9分钟

初学者的Git概念和工作流程

软件开发人员通常每天都要写大量的代码。他们可能在做一个新的项目或调整一个现有的项目。但是,一段时间后,代码库可能会增长到很难管理或跟踪任何变化。

例如,如果一个软件开发人员团队正在开发一个应用程序,怎么办?现在,他们怎么能跟踪做出特定改变的团队成员呢?

如果一个团队只有两个或三个成员,这可能不是一个问题。但是,试想一下,如果他们有10个、20个,甚至1000个左右?

现在,这似乎是一项艰巨的任务。不是吗?

你不必担心,因为这就是版本控制系统(VCS)发挥作用的地方。

在执行任何命令之前,我想最好先谈谈VCS和Git的概念。这将有助于你理解我们为什么需要它,以及它如何能改善我们现有的工作流程。


什么是版本控制系统?

它只是一个自动维护项目中每一个变化记录的软件。这样一来,团队就可以专注于创造一个实际的产品,而不是处理非生产性的任务,比如谁修改了某个特定的文件。

另外,由于VCS是一个计算机软件,所以它比我们更准确、更快速。总之,让我们看一下不同类型的版本控制系统。

  1. 集中式版本控制

    顾名思义,在集中式版本控制系统中,项目被存储在一个单一的/中心的位置(如服务器)。在这里,团队成员可以下载他想修改的文件,完成工作后只需将其上传到服务器。

    最流行的CVC软件被称为[Subversion]。

  2. 分布式版本控制

    在分布式版本控制系统(DVCS)中,每个团队成员都可以在他们的本地计算机上访问项目的完整副本。它不需要一个中央服务器,但你可能需要一个服务器来方便地与你的队友合作。

    这些天来,DVCS的概念非常流行,因为它使我们能够在一个项目上工作而不必担心互联网连接。我们只需要在想把改动上传到服务器的时候进行连接。

    Git是分布式版本控制系统的一个例子,今天你将学习它。


Git的概述

Git是最常用的分布式版本控制系统。它通过拍摄快照来记录项目中的每一个变化。这意味着你可以很容易地回滚到一个项目的任何先前的版本/状态。

2005年,Linus Torvalds发布了Git的第一个版本。别忘了,他也是创建Linux操作系统的人。

起初,Git是为软件开发团队使用的。但是,它足够灵活,可以追踪任何种类的文件。因此,无论你是教师、商人、平面设计师,还是内容作家,Git 都可以帮助你自动跟踪你的项目。


与队友协作

在本节中,你将学习团队成员如何使用 Git 进行协作。基本上,我将帮助你了解 Git 的实际工作流程。稍后,你会看到Git是如何为每个目的提供预定义的命令。那么,让我们开始吧。

  1. 在中央服务器上创建一个 "仓库"。仓库只是一个被 Git 软件跟踪的文件夹。
  2. 在你的电脑上下载该仓库。就 VCS 而言,我们通常把这一步称为 "克隆"。
  3. 在这个仓库中添加文件并提交。每当你提交一些东西,Git 都会对项目进行快照。然后,它维护快照的历史,供以后使用。
  4. 上传修改过的文件到服务器上。
  5. 下载任何被你的队友修改过的文件。

所以,这就是任何使用 Git 进行版本控制的项目的基本工作流程。现在,让我们看看如何用 Git 命令来实际实现这些概念。


创建一个仓库

默认情况下,Git 软件不会跟踪你电脑上的每一个文件。我们必须通知Git它必须追踪的特定文件夹。

要做到这一点,请在特定文件夹内打开命令提示符或终端,执行以下命令。

git init

这条命令将当前目录转换为一个仓库。基本上,它告诉 Git 软件开始追踪这个仓库内的所有文件和文件夹。

需要注意的是,所有的 Git 命令都以关键词git 开始。


工作目录、暂存区和仓库

image.png

Git 的开发环境部分

基本上,Git 开发环境由三个部分组成。这些部分背后的概念是非常重要的。因此,请格外注意,因为其他一切都取决于此。

  1. 工作目录

    它只是指文件系统中的文件和文件夹的当前状态。在这一点上,Git 并不跟踪这些文件。

  2. 暂存区

    在保存任何文件到仓库之前,你必须把它放在一个暂存区域。它就像一个提交前的文件和文件夹的临时位置。你可以很容易地从暂存区域添加或删除文件。

    如果你修改了任何文件,想把它们添加到暂存区域,那么只需执行下面的命令。

    git add .
    

    这里的点代表所有被修改的文件。

  3. 仓库

    仓库保存着你实际提交的文件。Git 将所有这些信息保存在一个叫做.git 的隐藏文件夹中。当你提交的时候,你的暂存区域里的任何东西都会被永久地保存在仓库里。

    你可以把提交想象成一个检查点。所以基本上,git会将你之前的检查点与最近的提交进行比较,只保存修改过的文件。

    你可以运行下面的命令,并附上关于修改内容的简短信息。

    git commit -m "Type a brief message here regarding this commit"
    

    提交信息真的很有帮助,因为它能让其他团队成员知道你在提交中做了什么。


检查状态

Git允许你轻松地检查哪些文件在暂存区域内被追踪/未被追踪。要做到这一点,你可以使用下面的命令。

git status

许多人经常使用它来获取暂存区域的当前状态。


连接本地仓库和服务器

在现实世界中,你可能会发现首先在Git托管提供商(如GitHubBitbucket)上创建一个仓库会更容易。然后,简单地把它克隆到你的本地电脑上。原因是他们会自动为你设置remote 。这意味着你的本地和远程仓库默认是相连的。

但是,如果你在本地电脑上创建了一个版本库,然后想把它和服务器连接起来。那么,运行下面的命令。

git remote add [remote_name] [remote_url]

你可以指定任何东西作为[remote_name] 。但是,我们习惯上把它命名为origin

其中,remote_url 是指向服务器上的 Git 仓库的路径。这个 URL 将由你的 Git 托管提供商提供。

下面是一个例子,说明这个命令在现实世界中的情况。

git remote add origin https://github.com/twbs/bootstrap.git

如果你想检查有多少远程仓库与你的本地仓库相连。只需使用下面的命令即可。

git remote -v

推送更改到服务器

image.png

Git推送

现在你已经把你的本地仓库和远程仓库连接起来了。现在是时候把改动上传到服务器上了。请看一下这个命令的语法。

git push [remote_name] [branch_name]

它需要 "远程 "和 "分支 "的名称,以便推送修改。默认情况下,我们只有一个分支,即 "master"。在本教程的后面,你会学到关于分支的知识。

所以,这个命令的例子是这样的。

git push origin master

从服务器拉取更改

image.png

Git 拉

如果你的队友也在同一个项目上工作,并且他们推送了一些修改到服务器上。你可以通过这个命令来获取这些变化。

git pull [remote_name] [branch_name]

例如:-

git pull origin master

默认情况下,当你运行这个命令时,Git 会下载修改过的文件,然后将其合并到你的仓库中。但是,如果你只是想检查远程仓库是否有改动,那么就用这个命令代替。

git fetch origin master

分支

image.png

Git的分支模型

Git 的分支模型类似于有分支的树。当你想在项目中添加一个新功能或修复一个错误时,它们特别有用。

基本上,你创建一个新的分支来单独测试一些东西。当你的工作完成后,只需将其与你的主分支(即master)合并。如果你不喜欢这个新想法,那么你可以很容易地放弃这些改动而不影响项目。

用这个命令来创建一个新的分支。

git branch <branch_name>

你也可以用Git删除一个分支。

git branch -D <branch_name>

要在一个特定的分支中做任何改动,你必须先在它里面移动。要做到这一点,请使用此命令。

git checkout <branch_name>

合并

image.png

Git 合并

假设你在一个新的分支上做了一些改动,想把它们和你的master 分支整合起来。你可以通过执行合并操作来做到这一点。

git merge <branch_name>

简单地说,这个命令是用来合并两个分支的。如果两个分支中的某个特定文件都被修改了,那么就会产生合并冲突。在这种情况下,你必须手动查看该文件,选择你想要的修改,并删除另一个。


总结

你刚刚看到了使用 Git 追踪项目的历史是多么容易。这是一个通常由程序员和软件开发人员使用的工具。但是,你不需要了解任何关于软件开发的知识就可以学习 Git 软件。

它有很多命令,而且语法非常简单,任何人都可以理解。