初学者的Git概念和工作流程
软件开发人员通常每天都要写大量的代码。他们可能在做一个新的项目或调整一个现有的项目。但是,一段时间后,代码库可能会增长到很难管理或跟踪任何变化。
例如,如果一个软件开发人员团队正在开发一个应用程序,怎么办?现在,他们怎么能跟踪做出特定改变的团队成员呢?
如果一个团队只有两个或三个成员,这可能不是一个问题。但是,试想一下,如果他们有10个、20个,甚至1000个左右?
现在,这似乎是一项艰巨的任务。不是吗?
你不必担心,因为这就是版本控制系统(VCS)发挥作用的地方。
在执行任何命令之前,我想最好先谈谈VCS和Git的概念。这将有助于你理解我们为什么需要它,以及它如何能改善我们现有的工作流程。
什么是版本控制系统?
它只是一个自动维护项目中每一个变化记录的软件。这样一来,团队就可以专注于创造一个实际的产品,而不是处理非生产性的任务,比如谁修改了某个特定的文件。
另外,由于VCS是一个计算机软件,所以它比我们更准确、更快速。总之,让我们看一下不同类型的版本控制系统。
-
集中式版本控制
顾名思义,在集中式版本控制系统中,项目被存储在一个单一的/中心的位置(如服务器)。在这里,团队成员可以下载他想修改的文件,完成工作后只需将其上传到服务器。
最流行的CVC软件被称为[Subversion]。
-
分布式版本控制
在分布式版本控制系统(DVCS)中,每个团队成员都可以在他们的本地计算机上访问项目的完整副本。它不需要一个中央服务器,但你可能需要一个服务器来方便地与你的队友合作。
这些天来,DVCS的概念非常流行,因为它使我们能够在一个项目上工作而不必担心互联网连接。我们只需要在想把改动上传到服务器的时候进行连接。
Git是分布式版本控制系统的一个例子,今天你将学习它。
Git的概述
Git是最常用的分布式版本控制系统。它通过拍摄快照来记录项目中的每一个变化。这意味着你可以很容易地回滚到一个项目的任何先前的版本/状态。
2005年,Linus Torvalds发布了Git的第一个版本。别忘了,他也是创建Linux操作系统的人。
起初,Git是为软件开发团队使用的。但是,它足够灵活,可以追踪任何种类的文件。因此,无论你是教师、商人、平面设计师,还是内容作家,Git 都可以帮助你自动跟踪你的项目。
与队友协作
在本节中,你将学习团队成员如何使用 Git 进行协作。基本上,我将帮助你了解 Git 的实际工作流程。稍后,你会看到Git是如何为每个目的提供预定义的命令。那么,让我们开始吧。
- 在中央服务器上创建一个 "仓库"。仓库只是一个被 Git 软件跟踪的文件夹。
- 在你的电脑上下载该仓库。就 VCS 而言,我们通常把这一步称为 "克隆"。
- 在这个仓库中添加文件并提交。每当你提交一些东西,Git 都会对项目进行快照。然后,它维护快照的历史,供以后使用。
- 上传修改过的文件到服务器上。
- 下载任何被你的队友修改过的文件。
所以,这就是任何使用 Git 进行版本控制的项目的基本工作流程。现在,让我们看看如何用 Git 命令来实际实现这些概念。
创建一个仓库
默认情况下,Git 软件不会跟踪你电脑上的每一个文件。我们必须通知Git它必须追踪的特定文件夹。
要做到这一点,请在特定文件夹内打开命令提示符或终端,执行以下命令。
git init
这条命令将当前目录转换为一个仓库。基本上,它告诉 Git 软件开始追踪这个仓库内的所有文件和文件夹。
需要注意的是,所有的 Git 命令都以关键词git 开始。
工作目录、暂存区和仓库
Git 的开发环境部分
基本上,Git 开发环境由三个部分组成。这些部分背后的概念是非常重要的。因此,请格外注意,因为其他一切都取决于此。
-
工作目录
它只是指文件系统中的文件和文件夹的当前状态。在这一点上,Git 并不跟踪这些文件。
-
暂存区
在保存任何文件到仓库之前,你必须把它放在一个暂存区域。它就像一个提交前的文件和文件夹的临时位置。你可以很容易地从暂存区域添加或删除文件。
如果你修改了任何文件,想把它们添加到暂存区域,那么只需执行下面的命令。
git add .这里的点代表所有被修改的文件。
-
仓库
仓库保存着你实际提交的文件。Git 将所有这些信息保存在一个叫做
.git的隐藏文件夹中。当你提交的时候,你的暂存区域里的任何东西都会被永久地保存在仓库里。你可以把提交想象成一个检查点。所以基本上,git会将你之前的检查点与最近的提交进行比较,只保存修改过的文件。
你可以运行下面的命令,并附上关于修改内容的简短信息。
git commit -m "Type a brief message here regarding this commit"提交信息真的很有帮助,因为它能让其他团队成员知道你在提交中做了什么。
检查状态
Git允许你轻松地检查哪些文件在暂存区域内被追踪/未被追踪。要做到这一点,你可以使用下面的命令。
git status
许多人经常使用它来获取暂存区域的当前状态。
连接本地仓库和服务器
在现实世界中,你可能会发现首先在Git托管提供商(如GitHub或Bitbucket)上创建一个仓库会更容易。然后,简单地把它克隆到你的本地电脑上。原因是他们会自动为你设置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
推送更改到服务器
Git推送
现在你已经把你的本地仓库和远程仓库连接起来了。现在是时候把改动上传到服务器上了。请看一下这个命令的语法。
git push [remote_name] [branch_name]
它需要 "远程 "和 "分支 "的名称,以便推送修改。默认情况下,我们只有一个分支,即 "master"。在本教程的后面,你会学到关于分支的知识。
所以,这个命令的例子是这样的。
git push origin master
从服务器拉取更改
Git 拉
如果你的队友也在同一个项目上工作,并且他们推送了一些修改到服务器上。你可以通过这个命令来获取这些变化。
git pull [remote_name] [branch_name]
例如:-
git pull origin master
默认情况下,当你运行这个命令时,Git 会下载修改过的文件,然后将其合并到你的仓库中。但是,如果你只是想检查远程仓库是否有改动,那么就用这个命令代替。
git fetch origin master
分支
Git的分支模型
Git 的分支模型类似于有分支的树。当你想在项目中添加一个新功能或修复一个错误时,它们特别有用。
基本上,你创建一个新的分支来单独测试一些东西。当你的工作完成后,只需将其与你的主分支(即master)合并。如果你不喜欢这个新想法,那么你可以很容易地放弃这些改动而不影响项目。
用这个命令来创建一个新的分支。
git branch <branch_name>
你也可以用Git删除一个分支。
git branch -D <branch_name>
要在一个特定的分支中做任何改动,你必须先在它里面移动。要做到这一点,请使用此命令。
git checkout <branch_name>
合并
Git 合并
假设你在一个新的分支上做了一些改动,想把它们和你的master 分支整合起来。你可以通过执行合并操作来做到这一点。
git merge <branch_name>
简单地说,这个命令是用来合并两个分支的。如果两个分支中的某个特定文件都被修改了,那么就会产生合并冲突。在这种情况下,你必须手动查看该文件,选择你想要的修改,并删除另一个。
总结
你刚刚看到了使用 Git 追踪项目的历史是多么容易。这是一个通常由程序员和软件开发人员使用的工具。但是,你不需要了解任何关于软件开发的知识就可以学习 Git 软件。
它有很多命令,而且语法非常简单,任何人都可以理解。