一文带你读懂 GitHub:基础介绍与操作 – wiki基地


一文带你读懂 GitHub:基础介绍与操作

在当今的软件开发世界中,GitHub 无疑是一个绕不开的名字。无论你是编程新手、经验丰富的开发者,还是项目管理者,都或多或少会接触到这个平台。它不仅是全球最大的代码托管平台,更是开发者们交流、协作、学习和展示成果的重要社区。

然而,对于刚接触编程或版本控制的人来说,GitHub 可能会显得有些复杂和陌生。各种术语(如 Commit、Branch、Pull Request、Fork)和操作(如 Clone、Push、Pull、Merge)让人眼花缭乱。

别担心!这篇文章将带你从零开始,系统地了解 GitHub 的核心概念、工作原理以及最常用的基本操作,让你能够自信地迈出使用 GitHub 的第一步。

本文将涵盖以下内容:

  1. GitHub 是什么? – 解开 GitHub 的神秘面纱
  2. 为什么使用 GitHub? – 它能为你带来什么好处?
  3. 核心概念解析 – 理解那些常用的 GitHub 术语
  4. 开始使用 GitHub – 从注册到基本操作
    • 创建 GitHub 账号
    • 创建新的代码仓库 (Repository)
    • 将远程仓库克隆到本地 (Clone)
    • 在本地进行代码修改
    • 提交本地修改 (Commit)
    • 将本地修改推送到远程仓库 (Push)
    • 从远程仓库获取最新修改 (Pull)
    • 分支 (Branch) 的使用:创建、切换、合并
    • 发起一个拉取请求 (Pull Request)
    • 分叉仓库 (Fork)
    • 创建和管理议题 (Issue)
  5. 总结与进阶 – 迈向更广阔的 GitHub 世界

1. GitHub 是什么?解开 GitHub 的神秘面纱

简单来说,GitHub 是一个基于 Git 版本控制系统的代码托管平台

要理解 GitHub,首先得知道 Git 是什么。

  • Git:Git 是一个分布式版本控制系统 (DVCS)。它由 Linus Torvalds(Linux 操作系统的创造者)在 2005 年创建,最初是为了更好地管理 Linux 内核的开发。版本控制系统的主要作用是追踪文件的历史变化,让你能够随时查看、比较、恢复到项目的任何一个历史状态。分布式意味着每个参与者都拥有完整的项目历史副本,这与传统的集中式版本控制系统(如 SVN)不同。Git 提供了强大的分支管理、快速的操作和离线工作能力。

  • GitHub:GitHub 在 Git 的基础上,提供了一个在线的代码托管服务和协作平台。你可以把你的 Git 仓库(代码及历史记录)存储在 GitHub 的服务器上,这样:

    • 你的代码有了云端备份。
    • 你可以方便地与其他人共享你的代码。
    • 多人可以协同开发同一个项目,Git 和 GitHub 提供了强大的工具来管理这些协作过程。
    • 它提供了网页界面和一系列额外功能(如 Issue 跟踪、Pull Request、Wiki、Pages 等),让项目管理和社交协作变得更加容易。

所以,可以把 Git 想象成一个非常强大的本地工具,用来管理你项目文件的历史;而 GitHub 则是一个在线服务,让你能够把这个工具的使用成果放到网上,并与全世界的人协作或分享。

GitHub 于 2008 年成立,并在 2018 年被 Microsoft 收购。它已经成为了开源项目的事实标准托管平台,同时也广泛应用于企业内部的项目开发。

2. 为什么使用 GitHub?它能为你带来什么好处?

使用 GitHub 的好处是多方面的:

  • 版本控制与历史追溯 (基于 Git):这是最核心的功能。Git 详细记录了项目的每一次修改(谁在什么时候修改了哪些文件,修改了什么内容)。这意味着你可以:
    • 随时回退到项目的任何历史版本。
    • 比较不同版本之间的差异。
    • 了解每个功能的开发过程和 Bug 的修复历史。
    • 在出现问题时轻松找到引入问题的修改。
  • 高效的协作与团队开发:GitHub 提供了强大的工具来支持多人协同开发。
    • 分支 (Branch):允许每个开发者在独立的环境中开发新功能或修复 Bug,互不干扰。
    • 拉取请求 (Pull Request – PR):提供了一个标准流程,让开发者可以将自己的修改建议提交给项目维护者,并在这个过程中进行代码审查、讨论和测试,确保代码质量后再合并到主线。
  • 代码托管与备份:将你的代码存储在 GitHub 的云端服务器上,不用担心本地硬盘损坏导致代码丢失。同时,这使得你在任何有网络的地方都能访问你的代码。
  • 项目管理:GitHub 提供了 Issues 功能,可以用来追踪 Bug、记录待办事项、讨论新功能,是轻量级的项目管理工具。
  • 社区与社交编程:GitHub 汇聚了全球数千万开发者。
    • 你可以轻松发现和参与优秀的开源项目。
    • 学习其他开发者的代码和项目经验。
    • 通过 Fork、Star、Watch、Follow 等功能与他人互动。
    • 展示自己的项目和编程能力,构建个人品牌。
  • 自动化与集成:GitHub 集成了 CI/CD(持续集成/持续部署)工具(如 GitHub Actions),可以自动化代码测试、构建和部署流程。
  • 代码展示与个人履历:许多公司在招聘时会查看应聘者的 GitHub 主页,将其作为评估其项目经验、代码质量和社区活跃度的重要依据。

3. 核心概念解析:理解那些常用的 GitHub 术语

在开始操作之前,理解一些核心概念至关重要:

  • 仓库 (Repository 或 Repo):仓库是 GitHub 上最基本的单元。你可以把它想象成一个项目的文件夹,它包含了项目的所有文件(代码、文档、图片等)以及由 Git 管理的该项目的所有历史版本信息。每个项目通常对应一个仓库。仓库可以是公开的 (Public),任何人都可以查看;也可以是私有的 (Private),只有授权的用户才能访问。
  • 提交 (Commit):Commit 是 Git/GitHub 中的一个基本操作单位。它表示你在本地对仓库文件进行了一系列修改,然后将这些修改保存为一个新的历史版本。每次 Commit 都应该包含一个简短有意义的提交消息 (Commit Message),说明这次修改的目的。Commit 是版本控制的基石,所有的历史追溯都是基于一个个 Commit。
  • 分支 (Branch):分支是 Git 中最强大的特性之一。你可以把它想象成项目开发的一条时间线。当你创建一个新的分支时,你实际上是基于当前分支的状态,创建了一个并行的开发环境。开发者可以在自己的分支上独立进行开发、实验,而不会影响到主分支(通常是 mainmaster)。开发完成后,可以将分支合并回主分支或其他目标分支。分支使得并行开发和隔离风险成为可能。
  • 合并 (Merge):Merge 是将一个分支的修改合并到另一个分支的操作。例如,你在 feature-x 分支开发了一个新功能,完成后需要将 feature-x 分支的所有 Commit 合并到 main 分支,使得主分支也包含这个新功能。合并过程中可能会出现冲突 (Conflict),需要手动解决。
  • 分叉 (Fork):Fork 是 GitHub 平台特有的一个操作。当你对某个仓库感兴趣,想在其基础上进行修改,但又没有直接修改该仓库的权限时,你可以选择 Fork 它。Fork 操作会在你的 GitHub 账号下创建一个该仓库的完全副本。这个副本是独立于原仓库的,你可以在你的副本中随意修改,不会影响原仓库。如果你想把你修改的内容贡献回原仓库,就需要用到 Pull Request。
  • 拉取请求 (Pull Request 或 PR):PR 是 GitHub 上用于协作的核心机制。当你 Fork 了别人的仓库并在自己的 Fork 仓库上做了修改(或者在有权限的情况下在源仓库的某个分支上做了修改),你希望将这些修改合并原仓库的某个分支(通常是 maindevelop)时,你需要发起一个 Pull Request。PR 是一个请求,告诉原仓库的维护者:“我这里有一些修改,请审阅并拉取(Pull)到你的仓库中”。PR 页面提供了代码差异对比、评论、讨论、在线代码审查和测试状态显示等功能,方便维护者决定是否接受这些修改。
  • 议题 (Issue):Issue 是 GitHub 上用于跟踪任务、Bug、功能请求、待办事项或进行项目讨论的工具。任何用户(包括非项目成员)都可以在公开仓库中创建 Issue。Issue 可以被分配给特定的开发者、打上标签 (Label) 进行分类、进行评论讨论,是项目管理和沟通的重要组成部分。

理解了这些概念,我们就可以开始实际操作了。

4. 开始使用 GitHub:从注册到基本操作

在开始操作之前,请确保你已经在你的电脑上安装了 Git。你可以访问 https://git-scm.com/ 下载和安装适合你操作系统的版本。安装完成后,打开命令行工具(Terminal 或 Git Bash),运行 git --version 查看是否安装成功。

4.1 创建 GitHub 账号

访问 GitHub 官网 https://github.com/。点击右上角的 “Sign up” 按钮,按照提示填写信息(用户名、邮箱、密码),完成账号创建和邮箱验证。选择适合你的计划(个人用户通常从免费计划开始即可)。

4.2 创建新的代码仓库 (Repository)

这是你存放项目代码的地方。

  1. 登录 GitHub 账号。
  2. 点击页面右上角的 “+” 号,选择 “New repository”。
  3. 填写仓库信息:
    • Repository name (仓库名称):给你的项目起一个简洁有意义的名字(例如:my-first-project)。
    • Description (描述):简要说明你的仓库是做什么的。
    • Public 或 Private (公开或私有):选择你的仓库是否对所有人可见。
    • Initialize this repository with:
      • Add a README file:强烈建议勾选。README 文件是项目的介绍,通常是用户访问你仓库时首先看到的内容,写清楚项目是什么、怎么用非常重要。
      • Add .gitignore:可选。.gitignore 文件用来告诉 Git 忽略哪些文件或文件夹(例如:编译生成的文件、日志文件、IDE 配置文件等),避免它们被提交到仓库中。你可以根据你的项目类型选择一个模板。
      • Choose a license:可选。选择一个开源许可证决定了其他人如何使用你的代码。
  4. 点击绿色的 “Create repository” 按钮。

恭喜你!你的第一个 GitHub 仓库就创建好了。

4.3 将远程仓库克隆到本地 (Clone)

你的仓库现在只存在于 GitHub 服务器上。为了在本地电脑上进行开发,你需要将远程仓库克隆到本地。

  1. 在你创建的仓库页面,找到绿色的 “Code” 按钮。
  2. 点击它,你会看到几种克隆方式(HTTPS、SSH 等)。对于初学者,使用 HTTPS 通常最简单。复制 HTTPS 的链接地址。
  3. 打开你的命令行工具(Terminal、Git Bash 或命令提示符)。
  4. 切换到你想要存放项目的文件夹。
  5. 运行 Git 命令 git clone 加上刚才复制的仓库链接:
    bash
    $ git clone https://github.com/你的用户名/你的仓库名.git

    例如:git clone https://github.com/octocat/my-first-project.git
  6. Git 会将远程仓库的全部内容(包括历史记录)下载到你当前文件夹下的一个新文件夹中(以仓库名命名)。
  7. 使用 cd 命令进入这个新文件夹:
    bash
    $ cd 你的仓库名

现在,你已经在本地拥有了这个项目的完整副本,可以在这个文件夹里开始工作了。

4.4 在本地进行代码修改

使用你喜欢的代码编辑器,在这个克隆下来的项目文件夹中添加、删除或修改文件。

例如,你可以创建一个新的文件 hello.txt,并在其中写入一些内容。或者修改之前创建的 README.md 文件。

4.5 提交本地修改 (Commit)

当你完成了一系列修改,并且认为这些修改是一个相对完整的单元(例如,实现了一个小功能,修复了一个 Bug),就可以将这些修改提交 (Commit) 到本地仓库的历史记录中。

这个过程通常分两步:

  1. 暂存修改 (Add):告诉 Git 你要将哪些修改包含在下一次提交中。这就像把文件放到一个暂存区里。
    bash
    $ git add .

    (. 表示添加当前目录下所有被修改或新增的文件到暂存区。你也可以指定具体文件,例如 git add hello.txt
  2. 提交到本地仓库 (Commit):将暂存区中的所有修改正式保存为一个新的版本,并附带一条提交消息。
    bash
    $ git commit -m "Add hello.txt and update README"

    (-m 后面的字符串就是提交消息。请写得简短且有意义,说明这次提交做了什么。如果修改较多,可以省略 -m,Git 会打开一个编辑器让你输入更详细的提交消息。)

现在,你的修改已经作为本地仓库历史的一部分被记录下来了。你可以运行 git log 命令查看提交历史。

4.6 将本地修改推送到远程仓库 (Push)

你的修改目前只存在于你的本地电脑上。为了让这些修改出现在 GitHub 上的远程仓库中,你需要将本地的 Commit 推送 (Push) 到远程仓库。

  1. 运行推送命令:
    bash
    $ git push origin main

    • origin:是远程仓库的别名,通常 git clone 会自动将克隆来源的远程仓库命名为 origin
    • main:是你当前所在的分支名称。默认的主分支现在通常叫做 main,老项目可能是 master
  2. 如果是第一次推送到该分支,Git 可能会提示你需要设置上游分支:
    bash
    $ git push -u origin main

    -u 参数会在本地分支和远程分支之间建立关联,之后你再 push 和 pull 该分支时,就可以省略 origin main,直接使用 git pushgit pull
  3. Git 会要求你输入 GitHub 的用户名和密码(或者使用 SSH 密钥/Personal Access Token 进行认证)。

推送成功后,你刷新 GitHub 上的仓库页面,就能看到你的最新 Commit 和文件修改了。

4.7 从远程仓库获取最新修改 (Pull)

如果在你工作的过程中,其他人也向同一个仓库推送了修改,你的本地仓库就不是最新的了。你需要将远程仓库的最新修改拉取 (Pull) 到你的本地。

Pull 操作实际上是两个 Git 命令的组合:先执行 fetch 从远程仓库下载最新的 Commit,再执行 merge 将下载下来的 Commit 合并到你当前所在的本地分支。

  1. 切换到你想要更新的分支(通常是 mainmaster)。
    bash
    $ git checkout main
  2. 执行拉取命令:
    bash
    $ git pull origin main

    或者如果之前设置了上游分支:
    bash
    $ git pull

Git 会下载远程仓库的最新 Commit,并尝试与你当前的本地分支合并。如果你们修改了同一个文件的同一部分,可能会发生冲突 (Conflict),需要手动解决。

4.8 分支 (Branch) 的使用:创建、切换、合并

分支是 Git 的灵魂,也是协作开发的基础。

  • 查看本地分支
    bash
    $ git branch

    当前分支前会有一个 * 号。
  • 查看所有分支 (包括远程分支)
    bash
    $ git branch -a
  • 创建新分支
    bash
    $ git branch feature/add-login

    这会在当前 Commit 的基础上创建一个名为 feature/add-login 的新分支,但你仍然停留在原分支。
  • 切换到新分支
    bash
    $ git checkout feature/add-login

    或者更常用的,创建并立即切换到新分支:
    bash
    $ git checkout -b feature/add-login
  • 在分支上工作:在 feature/add-login 分支上进行修改、addcommit。这些修改只会存在于 feature/add-login 这个分支上,不会影响 main 分支。
  • 切换回主分支
    bash
    $ git checkout main
  • 合并分支:当你 feature/add-login 分支上的工作完成后,你需要将它合并到 main 分支。
    1. 首先切换到目标分支(通常是 main):
      bash
      $ git checkout main
    2. 确保目标分支是最新的(先 git pull)。
    3. 执行合并命令:
      bash
      $ git merge feature/add-login

      Git 会尝试将 feature/add-login 分支上的 Commit 合并到 main 分支。如果发生冲突,需要手动编辑冲突文件并解决。解决冲突后,使用 git add .git commit 完成合并提交。
  • 删除分支:合并完成后,如果不再需要 feature/add-login 分支,可以删除它(注意:删除前确保该分支的修改已经合并或者不再需要):
    bash
    $ git branch -d feature/add-login # 删除已合并的分支
    $ git branch -D feature/add-login # 强制删除分支 (即使未合并)
  • 推送分支到远程:如果你想让远程仓库也有你的新分支,需要 Push:
    bash
    $ git push origin feature/add-login

4.9 发起一个拉取请求 (Pull Request)

Pull Request (PR) 是 GitHub 上协作的核心流程,尤其是在开源项目中贡献代码时。

场景: 你 Fork 了别人的仓库,做了修改,现在想把你的修改贡献回原仓库。

  1. Fork 目标仓库:在目标仓库页面点击右上角的 “Fork” 按钮,在你的账号下创建一个副本。
  2. 克隆你 Fork 的仓库到本地:使用 git clone 命令克隆你 Fork 后的仓库。
  3. 创建新分支:在本地仓库中创建一个新的分支进行修改(强烈推荐,不要直接在 main 分支上修改):
    bash
    $ git checkout -b my-feature-branch
  4. 进行修改并提交:在 my-feature-branch 分支上进行代码修改,然后 git addgit commit
  5. 推送到你的 Fork 仓库:将你的新分支及 Commit 推送到你 GitHub 账号下的 Fork 仓库:
    bash
    $ git push origin my-feature-branch
  6. 发起 Pull Request
    • 访问你 GitHub 账号下的 Fork 仓库页面。
    • GitHub 通常会自动检测到你刚刚推送了一个新分支,并在页面上方显示一个黄色的条幅,提示你可以发起一个 Pull Request。点击 “Compare & pull request” 按钮。
    • 如果没有看到提示,可以点击 “Pull requests” 标签页,然后点击绿色的 “New pull request” 按钮。
    • 在 PR 创建页面,你需要选择:
      • base repository (基础仓库)base branch (基础分支):这是你想将修改合并进去的目标仓库和分支(通常是原作者的仓库的 maindevelop 分支)。
      • head repository (对比仓库)compare branch (对比分支):这是包含你的修改的仓库和分支(这是你 Fork 的仓库和你的 my-feature-branch)。
    • GitHub 会对比这两个分支的代码差异,显示你所做的修改。
    • 填写 PR 的标题和描述。清晰地说明你做了什么、为什么做以及解决了什么问题。这对于代码审查者非常重要。
    • 点击 “Create pull request” 按钮。
  7. 等待审查:原仓库的维护者会收到你的 PR 通知,他们会审查你的代码、提出问题或建议。你可以在 PR 页面进行讨论、根据反馈修改代码(修改后只需要在本地 Commit 并 Push 到你的分支,PR 会自动更新)。
  8. 合并 PR:一旦代码审查通过,并且所有检查(如果配置了自动化测试等)都成功,原仓库的维护者就可以将你的 PR 合并到目标分支了。合并后,你的修改就正式成为了原项目的一部分。

4.10 分叉仓库 (Fork)

Fork 是发起 Pull Request 的前提(如果你没有直接对原仓库的写入权限)。

  • 如何 Fork:访问你想要贡献的 GitHub 仓库页面,点击右上角的 “Fork” 按钮,选择 Fork 到你的账号下即可。

何时使用 Fork?

  • 你想给一个你不拥有或没有写入权限的开源项目贡献代码。
  • 你想基于一个现有项目进行二次开发,但不想影响原项目。
  • 你想复制一个项目到你的账号下进行学习或试验。

4.11 创建和管理议题 (Issue)

Issue 是 GitHub 上的任务和 Bug 追踪工具。

  • 如何创建 Issue:访问仓库页面,点击 “Issues” 标签页,然后点击绿色的 “New issue” 按钮。选择 Issue 类型(如果仓库设置了模板),填写标题和详细描述,然后提交。
  • 如何使用 Issue:你可以在 Issue 页面进行评论、分配负责人 (Assignee)、添加标签 (Label) 进行分类(如 Bug, Feature, Enhancement, Question 等)、链接到 Pull Request 或其他 Issue。Issue 帮助团队成员和社区了解项目当前的问题、待办事项和讨论内容。

5. 总结与进阶

通过上面的介绍和操作,你应该对 GitHub 有了一个基本的认识,并掌握了最常用的功能:创建仓库、克隆、提交、推送、拉取、分支管理、发起 PR 和创建 Issue。

GitHub 的世界远不止于此。当你熟练掌握了基础操作后,可以进一步探索:

  • GitHub Pages:利用 GitHub 免费托管静态网站(比如个人博客、项目文档)。
  • GitHub Actions:配置自动化工作流程,实现 CI/CD。
  • GitHub Desktop:如果你不习惯命令行,可以使用 GitHub 提供的可视化客户端。
  • 代码审查 (Code Review):在 Pull Request 中进行更深入的代码审查。
  • 项目看板 (Projects):使用看板来管理 Issue 和 Pull Request,进行敏捷开发。
  • 探索 (Explore):发现 GitHub 上热门的项目和开发者。
  • Gist:托管代码片段。

学习建议:

  • 多实践:最好的学习方式是动手操作。创建一个自己的仓库,不断地 Commit、Push、Pull。尝试创建分支、合并分支。
  • 参与开源:找到你感兴趣的开源项目,尝试 Fork 它,修复一个小 Bug 或添加一个小功能,然后发起你的第一个 Pull Request。这是学习 GitHub 和 Git 工作流的绝佳方式。
  • 阅读文档:GitHub 官方文档(docs.github.com)和 Git 官方文档(git-scm.com/doc)是非常权威和详细的资料。
  • 利用社区资源:网上有很多关于 Git 和 GitHub 的教程、视频和课程,多学习和交流。

GitHub 是现代软件开发不可或缺的一部分。掌握它,不仅能让你更好地进行版本控制和团队协作,更能打开通往广阔开源世界的大门。从现在开始,勇敢地创建你的第一个仓库,提交你的第一行代码吧!祝你在 GitHub 的旅程中取得成功!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部