17611538698
webmaster@21cto.com

Git 初学者实践指南

前端 0 614 2024-06-07 06:06:03

导读:无论你是编程新手还是经验丰富的开发者、工程师,了解 Git 对于有效管理复杂项目和与其他队友合作都是至关重要的事儿。

图片

Git 到底是什么

Git 是一个免费的开源分布式版本控制系统,它用于在软件开发的各个阶段跟踪源代码随时间的变化。


它协调软件开发过程中协同工作的工程师之间的工作。


为什么使用 Git ?


  • 跟踪对文件所做的每个更改,从而让你更轻松地恢复到任何特定版本。

  • 保持项目历史记录井然有序且记录完好,以便追踪谁进行了更改。

  • 无论开发人员身在何处,都可以更加轻松地进行协作。

  • 在开发附加功能的同时维护原有的代码库。


Git 与 GitHub:并不是一回事儿


可以将 Git 视为创建时间线但不在线存储文件的工具。这就是 GitHub 的作用所在。而 GitHub 是一个专为 Git 存储库设计的流行在线平台。


可以将 Git 想象成个人的文件系统,而 GitHub 则是在线版本的存储库和云平台。


Git 中的阶段


Git 具有三阶段架构,分别是工作目录、暂存区和本地存储库。


图片


Git 的几个阶段


  • 工作目录:这是您为项目创建、修改或删除文件的区域。

  • 暂存区:这是预提交区域。每当文件被标记为提交时,它就会被移动到此区域。

  • 本地存储库:这是 Git 存储已提交更改的地方。提交后,对暂存区中的文件所做的更改将永久保存。


在任何指定的时间点,每个文件都处于其中一个阶段。

如何安装 Git


首先,请从官方网站下载Git,并完成安装。


https://www.git-scm.com/


安装完成后,Windows 启动 cmd,输入命令git --version,然后按回车键。您应该能够看到已安装的 git 版本。


>> git --versiongit version 2.43.0


初始化 Git 存储库


创建一个新文件夹(这将是我们的工作目录),可按照你喜欢的名称命名。进入该文件夹,并运行以下命令:

git init

这将在当前文件夹中初始化一个 git 存储库(生成一个.git 文件夹)。

存储库会跟踪一段时间内对项目中的文件所做的全部更改,并保存与项目相关的配置和其它详细信息。

配置用户名和密码


git config --global user.name "Your name"git config -global user.email "Your email id"



这将在用户级别为所有存储库配置用户名和电子邮件。


如果您只想为当前存储库配置用户名和电子邮件,则可以省略该标志。也可以使用该标志在系统级别进行配置(需要管理员/sudo 访问权限)。


存储库级别的名称和电子邮件具有最高优先级,其次是用户级别的配置,然后是系统级别的配置:--global--system。


验证详细信息:

git config user.namegit config user.email


这将显示适用于当前存储库的用户名与密码。

Git 中的状态


  • Untracked 未跟踪:创建了一个尚未提交的新文件。

  • Modified 已修改:对先前提交的文件进行了更改。

  • Staged 暂存:已将修改或创建的文件标记为提交。

  • Committed 已提交:已成功将文件作为快照保存在本地存储库中。


图片

Git 中的状态


使用如下命令检查文件的状态:

git status

这将显示当前分支(默认为 master)以及分组为已修改(或已删除)、未跟踪和暂存的文件状态。

Git 中的分支


分支为开发者提供了单独的工作区,使他们的代码可以同时工作而不会扰乱主线。


这使开发人员可以创建一个新的分支来开发功能或修复错误,以封装他们的更改,而不会影响主分支。项目将有一个主线分支,通常称为“主”分支,从该分支分出几个分支。


图片


Git 中的分支


Git 入门


让我们先创建一个新文件并向其中添加一些内容。需要从命令行执行此操作,使用命令echo content > filename。例如:

echo “Introduction to Git” > a.txt

此后,如果检查状态,将会看到该文件还未被跟踪。

暂存文件


要将文件暂存到工作目录中:

git add 

要将所有文件添加到暂存区:

git add .

这将递归地暂存当前目录和子目录中的所有文件。

取消暂存文件


要取消暂存您可能意外暂存以提交的文件,可以使用以下命令:

git reset 


提交文件


提交通过保留随时间推移所做更改的快照,以此来记录对项目中一个或多个文件的更改。


提交暂存区中的文件,使用以下命令:

git commit  -m “提交消息”

标志-m代表提交消息(message)。在这里应该简要描述在此提交中所做的详细更改,这些更改可能是创建文件或方法、修复错误或可能进行的任何内容。详细描述你所做的工作是一种很好的习惯。

现在,如果你检查 git 状态,那暂时什么都没有。

更改最后提交的文件的内容并保存。现在,如果检查 git 状态,你会看到文件的状态为已修改。这是因为本地存储库快照中的文件内容和工作目录中的文件内容不匹配,因为是在提交后修改了文件。

如果你到目前为止一直在遵循这些步骤,请继续暂存文件,然后提交更改。这对于我们到目前为止所做的步骤来说是一个很好的练习和实践。

查看提交历史记录


可以使用以下命令查看 git 提交历史记录的摘要:


git log


这将显示提交 ID、作者详细信息、日期和时间以及提交消息。

如果只想查看包含 ID 和提交消息的日志的较短版本,可以传递一个附加参数 --oneline标志。

使用远程存储库


要与其它开发人员共享代码,你需要将代码添加到远程存储库。


为此,我们将使用GitHub。如果你没有帐户,请先注册,如果有帐户了,请登录并创建一个新的存储库。


在 GitHub 上创建远程存储库


登录成功后,你会在右上角看到一个加号按钮,单击它,然后单击“New repository新建存储库”。


图片


请为存储库指定一个名称。向下滚动,然后单击“创建存储库”按钮。

添加远程存储库


你可以从以下位置获取新创建的 GitHub 存储库 URL:


图片


要将远程存储库添加到本地存储库,请使用以下命令:

git remote add  <远程-名称>  <存储库-url >

命令变为“github-repo 远程名称“ 。

这里“https://github.com/amalsebs/GitPractice.git ”便是远程存储库 url。

git remote add github-repo https://github.com/amalsebs/GitPractice.git

要查看已配置的远程存储库,使用以下命令:

git remote -v


使用 push 命令,推送到远程存储库


要将本地存储库的特定分支推送到远程存储库,请使用 push 命令:

git push <远程> <分支名称>

使用此作为参考,我们的命令git push github-repo master将成为默认位于 master 分支。推送后,转到 GitHub 中的存储库,你应该能够在那里找到自己的文件。

创建远程存储库的本地副本

假设你共享了公共存储库的 URL,而你的朋友想要开始处理该存储库。他应该首先创建远程存储库的本地副本。下面是使用 clone 创建远程存储库的本地副本:

git clone <存储库url>


这将创建一个与存储库同名的文件夹,之后它将创建一个 .git 文件夹并将存储库中的文件下载到该文件夹中。

要从 GitHub 获取存储库 URL,请参考如下图示:

图片


克隆完毕后,此本地存储库将自动链接到远程存储库。

注意:如果你在此处检查远程名称,它将是 origin,这是远程名称的默认值。

从远程存储库更新本地存储库


假设你的朋友从他们的系统中提交了新文件,并将其推送到你的远程存储库。现在你希望这些更改在本地存储库中更新。


为此,你可以使用以下命令:

git fetch

这将从远程存储库获取所有更改,包括提交和分支,并将其带到本地存储库,但不会带到工作目录。

从本地存储库更新工作目录


获取内容后,其更改将保存在 repo 中,以表示的分支中/


将这些更改带入我们的工作目录,我们需要执行合并操作。

git merge <远程>/<分支名>

以此为参考,我们的命令就变成了:

git merge github-repo/master

直接从远程存储库更新工作目录

git pull <远程> <分支>

以此为参考,我们的命令变为:

git pull github-repo master

这将获取远程存储库中的所有更改并将其带入我们当前的工作目录。是的,此命令是获取和合并操作的组合。

结束这篇长文

总结一下,以下所有使用的Git命令:


图片


Git 工作流


在这篇文章中,我们只是简单介绍了 Git 的皮毛,涵盖了入门 Git 所需的基础知识。

文中所介绍的命令其实还有更多选项,我们可以通过将标志-h与 git 命令一起联用,以便来查看这些选项。

在下一篇文章中,我们将介绍诸如使用分支和提出拉取请求等主题,使大家能够更有效地与其它开发人员和团队有效合作,并成为迈向开源贡献的第一步。

如果你希望我在下一篇文章中包含其它命令/主题,或者希望针对特定命令/主题单独发布详细的文章,欢迎在评论中发表高见。

作者:场长

评论