10 分钟内学习 Git 基础知识

2025-06-08

10 分钟内学习 Git 基础知识

是的,标题是个噱头。你不可能在短短 10 分钟内理解Git 技术的基础知识。但你可以在 25 分钟左右内接近这个水平。而这正是本文的目的。

如果您想开始学习 Git 技术,那么您来对地方了。这是一份全面的 Git 初学者指南。Git 有很多客户端。无论客户端是什么,其技术都是一样的。但在本指南中,我们将使用 GitHub 来理解 Git。

让我们开始吧!

什么是版本控制?

版本控制是一种记录文件或文件集随时间变化的系统,以便您日后可以调用特定版本。理想情况下,我们可以将计算机中的任何文件都纳入版本控制。

嗯...好吧...但是为什么呢?

原因如下:

版本控制系统 (VCS) 允许您将文件还原到先前状态,将整个项目还原到先前状态,查看一段时间内的更改,查看上次修改可能导致问题的内容的人员、问题由谁提出以及何时提出等等。使用 VCS 还意味着,如果您搞砸了事情或丢失了文件,通常可以轻松恢复。有时您只是想知道“是谁写的这个垃圾”,那么访问这些信息就很有意义了😈。

那么什么是 Git?

Git 是一个版本控制系统,用于跟踪计算机文件中的更改,并协调多个用户对这些文件的工作。Git 是一个分布式版本控制系统。因此,Git 并不一定依赖中央服务器来存储项目文件的所有版本。相反,每个用户都会“克隆”一个存储库(文件集合)的副本,并在自己的硬盘上保存项目的完整历史记录。这个克隆版本包含原始版本的所有元数据,而原始版本本身则存储在自托管服务器或 GitHub 等第三方托管服务上。

Git 可以帮助你跟踪代码更改。它本质上是代码编辑器的历史记录选项卡(没有隐身模式🌚)。如果在编码过程中遇到致命错误,并且不知道原因,你可以随时恢复到稳定状态。因此,它对调试非常有帮助。或者,你也可以简单地查看一段时间内对代码所做的更改。

文件版本历史的一个简单示例。文件版本历史的一个简单示例。

在上面的例子中,三张卡片分别代表同一文件的不同版本。我们可以在任何时间点选择要使用的文件版本。这样我就可以在 git 时间连续体中来回跳转到该文件的任意版本。

Git 还可以帮助您在多人之间同步代码。想象一下,您和您的朋友正在合作一个项目。你们都在处理同一个项目文件。现在,Git 会将您和朋友各自所做的更改合并到一个“”仓库中。因此,使用 Git 可以确保你们都在使用仓库的最新版本。这样,您就不必担心互相邮寄文件,也不必处理大量原始文件的副本。远程协作变得像使用 HTML 一样简单 🙃。

Git 工作流程:

在我们开始使用 Git 命令之前,您必须了解它代表什么。

什么是存储库?

存储库又名repo)只不过是源代码的集合。

Git 工作流中有四个基本元素。

工作目录暂存区本地存储库远程存储库

简单 Git 工作流程图简单 Git 工作流程图

如果您考虑工作目录中的文件,它可能有三种状态。

  1. 它可以暂存。这意味着更新后的文件将被标记为已提交到本地存储库,但尚未提交。

  2. 它可以被修改。这意味着更新后的文件尚未存储在本地存储库中。

  3. 它可以被提交。这意味着您对文件所做的更改已安全地存储在本地存储库中。

  • git add 是一个用于将工作目录中的文件添加到暂存区的命令。

  • git commit 是一个用于将所有暂存的文件添加到本地存储库的命令。

  • git push 是一个用于将本地仓库中所有已提交的文件添加到远程仓库的命令。因此,在远程仓库中,所有文件和更改都将对任何有权访问远程仓库的人可见。

  • git fetch 是一个用于将文件从远程存储库获取到本地存储库但不获取到工作目录的命令。

  • git merge 是一个用于将文件从本地存储库放入工作目录的命令。

  • git pull 是用于从远程仓库直接获取文件到工作目录的命令。它相当于 git fetch 和 git merge。

现在我们已经了解了 Git 是什么以及它的基本术语,接下来我们来看看如何在 git 下放置一个文件。我们将用正确且比较难的方法来完成。无需任何 GUI 应用程序。

我假设你已经有一个想要置于版本控制下的文件。如果没有,请创建一个名为“MuskCult”的示例文件夹,并在其中放置一些示例代码文件。

步骤 0:创建一个 GitHub 帐户。

如果您还没有,您可以在这里创建一个。

步骤 1:确保您的机器上安装了 Git。

如果您使用的是Mac,请启动终端并输入以下命令:

$ git --version
Enter fullscreen mode Exit fullscreen mode

如果您还没有安装 git,这将提示您打开安装程序。请使用安装程序进行设置。如果您已经安装了 git,它只会显示您安装的 git 版本。

如果您正在运行Linux(deb),请在终端中输入以下内容:

$ sudo apt install git-all
Enter fullscreen mode Exit fullscreen mode

如果您使用的是Windows

$ get a mac
Enter fullscreen mode Exit fullscreen mode

开玩笑的……放松……我触发的人数……呼……
转到此链接或此链接以获取有关如何获取它的更多信息。

第 2 步:告诉 Git 你是谁。

介绍一下自己。请滑进去。说真的,请提供你的 Git 用户名和电子邮件地址,因为每次 Git 提交都会使用这些信息来识别你是作者。

$ git config --global user.name "YOUR_USERNAME"

$ git config --global user.email "im_satoshi@musk.com"

$ git config --global --list # To check the info you just provided
Enter fullscreen mode Exit fullscreen mode

步骤 3:生成/检查您的设备是否存在 SSH 密钥。(可选)

为什么会这样?使用SSH 协议,你可以连接远程服务器和服务并进行身份验证。使用 SSH 密钥,你每次访问 GitHub 时无需提供用户名或密码。

点击此链接了解更多关于 SSH 的信息。
点击此处检查您是否已有 SSH 密钥。
点击此处生成 SSH 密钥。
点击此处将 SSH 密钥添加到您的 GitHub 帐户。
最后,点击此处测试其连接。

如果您确实设置了 SSH,则每个带有链接的 git 命令都可以用以下方式替换:

**Instead of: https://github.com/username/reponame**

**You use    : git@github.com/username/reponame.git**

      **Note: You can use both ways alternatively**
Enter fullscreen mode Exit fullscreen mode

我将在本教程中使用 SSH 协议。

步骤 4:让我们开始 Git

在 GitHub 上创建一个新的仓库。点击此链接
现在,在终端中找到你想要放在 git 下的文件夹。

$ cd Desktop/MuskCult
Enter fullscreen mode Exit fullscreen mode

初始化 Git:

要将其放置在 git 下,请输入:

$ touch README.md   # To create a README file for the repository
$ git init          # Initiates an empty git repository
Enter fullscreen mode Exit fullscreen mode

现在编辑 README.md 文件来提供有关存储库的信息。

将文件添加到暂存区以供提交:

现在将文件添加到 git 存储库以供提交:

$ git add . 
# Adds all the files in the local repository and stages them for commit

OR if you want to add a specific file

$ git add README.md
# To add a specific file
Enter fullscreen mode Exit fullscreen mode

在提交之前,我们先看看暂存了哪些文件:

$ git status # Lists all new or modified files to be committed
Enter fullscreen mode Exit fullscreen mode

提交对 Git Repo 所做的更改:

现在提交添加到 git 仓库的文件:

$ git commit -m "First commit"
# The message in the " " is given so that the other users can read the message and see what changes you made
Enter fullscreen mode Exit fullscreen mode

取消提交您刚刚对 Git Repo 所做的更改:

现在假设您刚刚在代码中犯了一些错误或者在存储库中放置了一个不需要的文件,您可以使用以下命令取消暂存刚刚添加的文件:

$ git reset HEAD~1
# Remove the most recent commit
# Commit again!
Enter fullscreen mode Exit fullscreen mode

添加远程来源并推送:

现在,每次你修改文件并保存时,它都不会自动在 GitHub 上更新。我们在文件中所做的所有更改都会在本地存储库中更新。现在将更改更新到主版本:

$ git remote add origin remote_repository_URL
# sets the new remote
Enter fullscreen mode Exit fullscreen mode

git remote命令允许您创建、查看和删除与其他存储库的连接。

$ git remote -v
# List the remote connections you have to other repositories.
Enter fullscreen mode Exit fullscreen mode

git remote -v命令列出了您与其他存储库的远程连接的 URL。

$ git push -u origin master # pushes changes to origin
Enter fullscreen mode Exit fullscreen mode

现在,git push命令将本地存储库中的更改推送到您指定为源的远程存储库。

现在,如果我们去检查 GitHub 上的存储库页面,它应该看起来像这样:

就这样。您刚刚将文件添加到了刚刚在 GitHub 上创建的存储库中。

查看您对文件所做的更改:

一旦你开始对文件进行更改并保存,该文件将与提交给 git 的最后一个版本不匹配。要查看刚刚所做的更改:

$ git diff # To show the files changes not yet staged
Enter fullscreen mode Exit fullscreen mode

恢复到 Git Repo 的最后提交版本:

现在,您可以选择通过输入以下命令恢复到上次提交的版本:

$ git checkout .

OR for a specific file

$ git checkout -- <filename>
Enter fullscreen mode Exit fullscreen mode

查看提交历史记录:

您可以使用git log命令查看对文件所做的提交的历史记录:

$ git log
Enter fullscreen mode Exit fullscreen mode

每次您希望在 GitHub 上反映更改时,以下是最常见的命令流程:

$ git add .
$ git status # Lists all new or modified files to be committed
$ git commit -m "Second commit"
$ git push -u origin master
Enter fullscreen mode Exit fullscreen mode

现在,如果我们去查看我们的仓库,我们可以通过查看每个文件的提交消息来确定提交是否成功。

步骤 5:一切都很好...但是如何下载和处理 GitHub 上的其他存储库?

克隆 Git Repo:

找到要克隆仓库的目录。复制所需仓库的链接,然后输入以下内容:

$ git clone remote_repository_URL
Enter fullscreen mode Exit fullscreen mode

请随意继续克隆我上面创建的 repo:https ://github.com/Gothamv/MuskCult

将更改推送到 Git Repo:

现在,您可以处理所需的文件并在本地提交更改。如果您想将更改推送到该存储库,则必须将其添加为该存储库的协作者,或者必须创建拉取请求。您可以在这里查看如何创建拉取请求,并将您的代码文件提交给我。

合作:

想象一下,你和朋友正在合作一个项目。你们都在处理同一个项目文件。每次你做了一些更改并将其推送到主仓库时,你的朋友就必须拉取你推送到 git 仓库的更改。这意味着,为了确保每次开始工作时你都在使用 git 仓库的最新版本,使用 git pull 命令是最佳选择。

下面是我和我的朋友合作的一个项目的例子:

刚刚在 repo 上进行了一次提交 刚刚在 repo 上进行了一次提交

因此,为了确保这些更改反映在我的本地存储库副本上:

$ git pull origin master
Enter fullscreen mode Exit fullscreen mode

这里还有两个有用的 git 命令:

$ git fetch
    AND
$ git merge
Enter fullscreen mode Exit fullscreen mode

简单来说,git fetch 加上 git merge 就等于 git pull。但为什么会有这些操作呢?

当你使用 git pull 时,Git 会尝试自动为你完成工作。它是上下文敏感的,因此 Git 会将所有拉取的提交合并到你当前正在处理的分支中。git pull 会自动合并提交,而无需你先进行审查

当你执行 git fetch 时,Git 会从目标分支收集当前分支中不存在的所有提交,并将它们存储在本地仓库中。但是,它不会将它们与当前分支合并。如果你需要保持仓库更新,但正在处理一些在更新文件时可能会中断的工作,那么此功能尤其有用。要将提交集成到主分支,请使用 git merge。

还有一件事:

.gitignore
Enter fullscreen mode Exit fullscreen mode

那么它是什么?

.gitignore 告诉 git 应该忽略哪些文件(或模式)。它通常用于避免提交工作目录中对其他协作者无用的临时文件,例如编译产品、IDE 创建的临时文件等。

因此,在上面的例子中,系统使用pycache和 .DS_Store 等文件来存储信息,以便更快地访问。这对其他协作者来说毫无用处。因此,我们可以通过添加 .gitignore 文件来告诉 Git 忽略它们。

使用 touch 命令创建 .gitignore 文件:

$ touch .gitignore
Enter fullscreen mode Exit fullscreen mode

您还可以添加以下模式来告诉 git 忽略此类文件。

/.cmake
/
.DS_Store
/.user
/build
etc. depending upon the files you want git to untrack
Enter fullscreen mode Exit fullscreen mode




基础知识就这些了。敬请期待第二部分,我们将重点介绍分支、合并、存储、变基等操作。

和平✌️

参考:

https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/

https://blog.github.com/2015-06-08-how-to-undo-almost-anything-with-git/

https://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html

https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html

https://stackoverflow.com/questions/292357/git-pull-and-git-fetch 之间有什么区别

https://youtu.be/3a2x1iJFJWc

鏂囩珷鏉ユ簮锛�https://dev.to/gothamv/learn-the-basics-of-git-in-under-10-minutes-475c
PREV
你用 HTML 或 CSS 制作过哪些酷炫的作品?S1:E6 - 鲜为人知的生产力工具;大幅提升生产力
NEXT
什么是 go 工作区以及如何使用它们?