在本教程中,您将了解什么是版本控制以及如何使用Git为开源项目做出贡献。我们将了解Git的基础知识,这是任何 Web 开发人员都不可或缺的知识。
什么是Git?
Git是一个版本控制软件,可让您与其他程序员协作。Git解决的最大问题是它帮助开发人员跟踪他们正在处理的代码库的不同版本。
在版本控制系统发明之前,不同的开发人员很难同步他们的工作。
为什么要使用Git?
如果您不使用Git,则创建项目将如下所示:
使用Git,它看起来更加优雅,如下所示:
如何安装Git
您可以从官方网站下载并安装Git。
如果您在Windows上使用它,请确保将Git添加到环境变量Path
中。
在 Linux 中,您可以使用以下命令直接从终端安装它:
sudo apt-get install git
安装完成后,您可以通过执行以下命令来检查Git是否安装正确:
git --version
如果您获得当前安装的版本,则安装成功,您就可以开始了。
Git基础知识
现在让我们通过一些小例子来学习Git的基础知识。
首先,让我们讨论如何为代码创建单一的真实来源。
在 Git 中,存储代码的地方称为repository。
如何初始化一个空的 Git 存储库
在项目中使用Git 的第一步是初始化Git存储库。您可以使用以下命令初始化Git存储库:
git init
此命令在当前目录中创建一个子目录.git
。它将保存所有内部 Git 元数据,例如提交历史记录。
如何在 Git 中暂存更改
我们需要创建一些文件来暂存更改并进行提交(我将在下面讨论)。让我们创建test.txt并在其中插入一些文本。
暂存意味着告诉 Git 您准备将哪些文件提交(添加)到存储库。当您正在进行工作并想要提交单个文件时,它非常有用。
现在,我们已准备好进行更改。您可以单独列出要暂存的文件,如下所示:
git add test.txt
一旦我们执行了这个命令,Git 就知道test.txt已经准备好提交了。
或者,您可以使用以下命令暂存所有文件:
git add .
当您有一堆文件并且不想键入每个文件名时,它很有用。
如何在 Git 中提交更改
提交更改会在给定的时间点创建代码库的快照。您可以稍后返回此快照或与您的队友共享,以便他们可以从您的进度中积累。
请记住,只有为提交暂存的文件才会包含在其中。如果你不暂存任何东西,你将无法提交。
在暂存我们的更改之后,是时候提交更改了。要提交更改,请使用:
git commit -m "<message describing the change>"
一旦我们执行了git commit,我们就完成了对代码库的更改。
给代码写注释是一种良好的美德,给Git写提交信息也是。在很多集成git的ide中,没有填写提交信息是不能进行提交的,提交信息也可以帮助你快速定位到你修改的地方,以及做了哪些改动。相信我,写了提交信息会让你对你所做的工作有个更清晰的了解。
如何在 Git 中查看日志
您可能希望查看项目更改的日志。您可以使用以下命令执行此操作:
git log
日志如下所示:
如您所见,有 2 个提交。第一个显示我们已经创建了一个新文件,第二个描述了对它的修改。
请记住,Git 不会自动跟踪您所做的更改。您应该手动暂存和提交它们。
如何在 Git 中重置和恢复提交
如果您在提交中犯了错误,您可能想要撤销更改。
有两种方法可以撤消更改:
- Reset
- Revert
Git重置(Reset)
重置命令的一般语法如下所示: git reset <reset types> HEAD~<number of commits to undo>
最常用的重置类型是:
- --soft :取消提交并保持更改
- --hard :取消提交和删除更改
如果我们想从 Git 中取消提交更改,但保留对代码的本地修改,我们使用以下命令:
git reset --soft HEAD~1
当您不小心暂存了一些不属于提交的文件时,它很有用。
重置后,您可以暂存必要的更改并提交它们。
Git 还原
您可能还注意到,每个提交都与一个hash值相关联。
您还可以使用hash值来撤销特定的提交:
git revert 8a11c5095f2dcd70b0bc8c66061a1368558a3abf
这与重置不同,因为它允许您撤销在特定提交中所做的更改。
在我们分解命令的时候,我们发现git revert <commit hash>在您还原更改时,Git 会添加一个额外的提交。
如何使用 Git 分支
Git 允许您创建不同的分支。这些分支使您可以将代码版本的范围分开(例如,错误修复、开发、生产等——所有不同的分支)。
要创建新分支,请使用以下命令:
git checkout -b <new branch name>
要切换到现有分支,请删除-b标志并使用现有分支名称而不是新分支名称:
git checkout <branch name>
如何合并 Git 分支
在分支中进行切换后,您可能希望使用另一个分支的代码更新主分支。为此,首先移动到要更新的分支并使用以下命令:
git merge <update source branch name>
如果一切顺利,此操作将在目标分支中创建一个合并提交,并在那里添加所有提交。
如何解决 Git 中的冲突
在合并分支时,可能会发生在每个分支中更新同一文件的相同部分的情况。
在这种情况下,会发生冲突,因为Git不知道要保留哪些更改以及要放弃哪些更改。所以 Git 创建了一个冲突消息,并提示你手动选择哪个分支是正确的。
冲突消息概述了冲突发生的位置以及当前和传入的更改。
决定如何解决冲突后,需要添加一个commit来解决冲突。
如何使用远程 Git 存储库
要与他人协作,您需要处理远程存储库。我们将专注于如何与GitHub合作使用Git,但您可以使用任何其他类似的站点,如GitLab或gitee。
要与他人协作,您需要在网站上创建一个帐户。现在您已准备好为GitHub 上的开源项目做出贡献。
不久前,我发现在我的编程博客中使用的开源 Hugo 主题Papermod中存在一个小问题。
修复非常简单,我想为该项目做出贡献以改进它。
贡献步骤:
- 找到您想要贡献的存储库。或者,如果您在公司环境中工作,您的公司可能会提供一个存储库供您使用。
- fork存储库。现在你有一个存储库的副本。
3. 复制此处找到的克隆链接:
4. 执行以下命令:
git clone <clone link>
将在您的计算机上创建存储库的副本。添加上游远程,只是源存储库的一个别称,使用:
git remote add <upstream remote name> <source repository clone link>
现在您可以使用您学到的Git基础知识来修改代码。
提交更改后,您可以使用以下命令更新源存储库:
git push origin <branch name to push changes>
现在您可以在源存储库中创建一个Pull Request,维护人员将审查并合并您的代码。
结论
在本文中,我们学习了Git的基础知识。现在您拥有了使用版本控制的工具,可以在您自己的项目中使用它,也可以为数以千计的在线开源项目做出贡献。
更详细的Git使用介绍可以前往git教程进行学习。