Help us learn about your current experience with the documentation. Take the survey.

教程:创建你的第一个 Git 提交

本教程将教你一些关于 Git 工作原理的基础知识。它会指导你完成创建自己的项目、编辑文件以及从命令行将更改提交到 Git 仓库的步骤。

完成后,你将拥有一个可以用来练习使用 Git 的项目。

开始之前

什么是 Git?

在开始步骤之前,我们先来了解一些基本的 Git 概念。

Git 是一个版本控制系统。它用于跟踪文件的更改。

你将文件(如代码或文档)存储在 Git 仓库 中。当你想要编辑文件时,你将 克隆 仓库到你的计算机,进行更改,然后将你的更改 推送 回仓库。在 GitLab 中,Git 仓库位于一个 项目 中。

每次你推送更改时,Git 会将其记录为一个唯一的 提交。这些提交构成了文件何时以及如何更改的历史记录,以及谁进行了更改。

%%{init: { "fontFamily": "GitLab Sans" }}%%
graph LR
    accTitle: 仓库提交历史
    accDescr: 显示仓库历史线性更改的流程图

    subgraph Repository commit history
    direction LR
    A(Author: Alex<br>Date: 3 Jan at 1PM<br>Commit message: Added sales figures<br> Commit ID: 123abc12) --->  B
    B(Author: Sam<br>Date: 4 Jan at 10AM<br>Commit message: Removed old info<br> Commit ID: aabb1122) ---> C
    C(Author: Zhang<br>Date: 5 Jan at 3PM<br>Commit message: Added invoices<br> Commit ID: ddee4455)
    end

当你在 Git 仓库中工作时,你在 分支 中工作。默认情况下,仓库的内容位于默认分支中。要进行更改,你需要:

  1. 创建自己的分支,这是你创建分支时默认分支的快照。
  2. 进行更改并将它们推送到你的分支。每次推送都会创建一个提交。
  3. 准备好后,将你的分支 合并 到默认分支中。
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart LR
    accTitle: 在 Git 中使用分支
    accDescr: 在 Git 中创建和使用分支的流程

    subgraph Default branch
    A[Commit] --> B[Commit] --> C[Commit] --> D[Commit]
    end
    subgraph My branch
    B --1#46; Create my branch--> E(Commit)
    E --2#46; Add my commit--> F(Commit)
    F --3#46; Merge my branch to default--> D
    end

如果这一切让你感到有些不知所措,请坚持住。你马上就会看到这些概念的实际应用。

步骤

以下是我们将要做的概述:

  1. 创建示例项目
  2. 克隆仓库
  3. 创建分支并进行更改
  4. 提交并推送你的更改
  5. 合并你的更改
  6. 在 GitLab 中查看你的更改

创建示例项目

首先,在 GitLab 中创建一个示例项目。

  1. 在 GitLab 中,在左侧边栏顶部,选择 Create new ( plus ) 和 New project/repository
  2. 对于 Project name,输入 My sample project。项目 slug 会自动为你生成。 这个 slug 是项目创建后你可以用来访问项目的 URL。
  3. 确保 Initialize repository with a README 已被选中。 其他字段的填写方式由你决定。
  4. 选择 Create project

克隆仓库

现在你可以在你的项目中克隆仓库。克隆 仓库意味着你在你的计算机上创建一个副本,或者在你想要存储和操作文件的任何地方。

  1. 在你的项目概览页面右上角,选择 Code,然后复制 Clone with SSH 的 URL。

    红色箭头指示页面右上角的 ‘Clone’ 按钮和 ‘Clone with SSH’ 选项

  2. 在你的计算机上打开终端,并转到你想要克隆文件的目录。

  3. 输入 git clone 并粘贴 URL:

    git clone git@gitlab.com:gitlab-example/my-sample-project.git
  4. 进入目录:

    cd my-sample-project
  5. 默认情况下,你已经克隆了仓库的默认分支。这通常是 main 分支。为了确认,获取默认分支的名称:

    git branch

    你所在的分支会用星号标记。 在键盘上按 Q 返回主终端窗口。

创建分支并进行更改

现在你有了仓库的副本,创建你自己的分支,这样你就可以独立地进行更改。

  1. 创建一个名为 example-tutorial-branch 的新分支。

    git checkout -b example-tutorial-branch
  2. 在文本编辑器(如 Visual Studio Code、Sublime、vi 或任何其他编辑器)中, 打开 README.md 文件并添加以下文本:

    Hello world! I'm using Git!
  3. 保存文件。

  4. Git 会跟踪已更改的文件。要确认哪些文件已更改,获取状态。

    git status

    你应该得到类似于以下的输出:

    On branch example-tutorial-branch
    Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
    modified:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")

提交并推送你的更改

你已经对仓库中的文件进行了更改。现在是时候通过进行第一次提交来记录这些更改。

  1. README.md 文件添加到 暂存 区域。暂存区域是你提交文件之前放置文件的地方。

    git add README.md
  2. 确认文件已暂存:

    git status

    你应该得到类似于以下的输出,文件名应该显示为绿色文本。

    On branch example-tutorial-branch
    Changes to be committed:
    (use "git restore --staged <file>..." to unstage)
    modified:   README.md
  3. 现在提交暂存的文件,并包含一条描述你所做更改的消息。确保将消息用双引号(")括起来。

    git commit -m "I added text to the README file"
  4. 更改已提交到你的分支,但你的分支及其提交仍然只存在于你的计算机上。其他人还无法访问它们。 将你的分支推送到 GitLab:

    git push origin example-tutorial-branch

你的分支现在在 GitLab 上可用,并且对你项目中的其他用户可见。

在页面左上角,红色箭头指示分支切换区域并突出显示你创建的分支

合并你的更改

现在你准备将 example-tutorial-branch 分支的更改合并到默认分支(main)。

  1. 检出你仓库的默认分支。

    git checkout main
  2. 将你的分支合并到默认分支。

    git merge example-tutorial-branch
  3. 推送更改。

    git push

在本教程中,你将分支直接合并到仓库的默认分支。在 GitLab 中,你通常使用 merge request 来合并分支。

在 GitLab 中查看你的更改

你做到了!你在你的分支中更新了 README.md 文件,并将这些更改合并到了 main 分支中。

让我们在 UI 中查看并确认你的更改。转到你的项目。

  • 向下滚动并查看 README.md 文件的内容。 你的更改应该可见。

  • README.md 文件上方,查看 Last commit 列中的文本。 你的提交消息显示在此列中:

    在 ‘Last commit’ 列中显示提交消息,在 ‘Last update’ 列中显示更新时间

现在你可以返回命令行并切换回你的个人分支 (git checkout example-tutorial-branch)。你可以继续更新文件或 创建新文件。输入 git status 查看 你的更改状态并随意提交。

如果你搞砸了也不用担心。Git 中的一切都可以撤销,如果你发现无法恢复,你总是可以创建一个新分支重新开始。

干得好。

查找更多 Git 学习资源