跳至内容

面向初学者的 GitHub 与 Git 教程

一篇面向初学者的教程,演示 Git 版本控制的工作原理,以及它为何对数据科学项目至关重要。
更新 2026年7月22日  · 9分钟

用 AI 探索

在 ChatGPT 中打开在 Claude 中打开在 Perplexity 中打开

作者配图

什么是 Git?

Git 是一种分布式、开源的版本控制系统。它使开发者和数据科学家能够跟踪代码、合并更改并回退到较早版本—— AWS。它允许您与远程服务器同步更改。凭借其灵活性与普及度,Git 已成为行业标准,几乎支持所有开发环境、命令行工具和操作系统。 

Git 如何工作?

Git 会将您的文件及其开发历史存储在本地仓库中。每当您保存已做的更改时,Git 都会创建一次提交(commit)。一次提交就是当前文件的快照。这些提交彼此相连,形成如下所示的开发历史图。它允许我们回退到之前的提交、比较更改并查看项目进度—— Azure DevOps。每次提交都由唯一的哈希值标识,用于比较和回退变更。  

开发历史图

开发历史图

分支

分支是与主版本并行运行的源代码副本。要保存修改,请将分支合并到主版本。此功能有助于无冲突的团队协作。每位开发者都有各自的任务,通过使用分支,他们可以在不受他人干扰的情况下开发新功能。任务完成后,您可以将新功能合并到主版本(master 分支)。如果您想学习如何克隆分支,请查看这篇 Git 克隆分支 教程。

向仓库添加新功能
向仓库添加新功能 


提交

Git 中文件有三种状态:已修改(modified)、已暂存(staged)和已提交(commit)。当您修改文件时,更改会保存到本地目录,但尚未成为 Git 的开发历史。要创建一次提交,您需要先将更改过的文件加入暂存区。您可以在暂存区增删变更,然后附上描述信息,将这些变更打包为一次提交。  

Git 中文件的三种状态
Git 中文件的三种状态

Git 的优势是什么?

  • 变更跟踪:允许开发者查看历史变更。开发历史有助于定位并修复缺陷。
  • IDE 集成:由于其广泛应用,几乎所有开发环境都支持 Git 集成,例如 VSCode 和 JupyterLab。
  • 团队协作:团队可以查看各自进度,并通过分支各自完成任务,再将更改合并到主版本。拉取请求、解决合并冲突与代码审查都能促进协作。 
  • 分布式 VCS:在分布式系统中,没有集中式文件存储。同一项目会有多个备份,这使得开发者可以离线工作并提交更改。 

面向数据科学项目的 Git

Git 为脚本、指标、数据与模型提供版本控制。通过 Git 扩展 git-lfs,您可以存储并管理大型数据集和机器学习模型的版本。在典型的数据科学项目中,您会有 Jupyter 笔记本、数据集、模型、元数据和模型指标。元数据包括包含机器学习模型、特征、模型参数及自动化文件等元信息的文件。这些对于监控 AI 应用进展和定位问题都必不可少。 

跟踪数据科学实验有助于研究人员回退意外更改、基于性能指标选择最佳实验,并与队友协作。下图展示了数据或代码的更改如何影响元数据与模型输出。跟踪这些变化也有助于其他队友提出更优方案。阅读 Summer Worsley 的最新博文,了解有关 Git 的一切

数据科学项目中的 Git
数据科学项目中的 Git 

与 GitHub 的协作

GitHub 是一个云端软件开发平台,常用于保存文件、跟踪变更并在项目中协作。近年来,GitHub 已成为最受欢迎的软件开发社区社交平台。个人可以为开源项目与缺陷报告做贡献,讨论新项目并发现新工具。 

数据科学家与机器学习工程师正沿着软件开发者的道路,将工作流与 GitHub 集成。这样做可以分享研究成果、促进社区贡献并与数据团队协作。您可以在该平台上找到各种数据科学和机器学习项目、指南、教程与资源。对于学生而言,该平台也是获取实践经验并进入知名企业的机会。 

作品集

大多数技术招聘人员都会索取作品集项目或 GitHub 主页,这有助于他们判断候选人与公司是否匹配。强烈建议创建并定期更新 GitHub 主页。招聘经理总是在寻找具备丰富软件开发经验并积极参与开源贡献的候选人。审阅 GitHub 作品集也有助于他们为技术面试做准备。 

GitHub 个人主页
GitHub 个人主页

GitHub 使数据科学家能够展示项目成果,同时也可作为简历中的工作经历加分项。展示作品集项目还能带来协作、创业与科研等机会。 

作品集项目
作品集项目

功能

GitHub 还提供许多与展示作品集同样重要的其他功能。了解这些功能有助于您将其融入数据科学项目。 

  • 开源生态:GitHub 为开源项目提供完整生态。您可以赞助维护者、参与贡献、在现有项目中使用开源工具并推广您的工作。 
  • 社区协作:GitHub 已成为讨论问题、功能请求、代码与文档贡献的社区平台。 
  • Explore:GitHub 的 Explore 标签帮助您发现新项目、热门工具与开发者活动。 
  • GitHub Gists:您可以分享代码片段或将其嵌入博客与网站。 
  • GitHub CLI:允许您在命令行执行合并请求、审查代码、查看问题并监控进度。 
  • 免费存储:无限制的私有与公共仓库存储。
  • 网站托管:您可以发布个人作品集网站或文档。GitHub Pages 提供易于构建与部署的网站体验。 
  • Codespace:与您的 GitHub 仓库集成的云端开发环境。 
  • Project:用于在 GitHub 上规划与跟踪工作的可定制、灵活工具。
  • 自动化:GitHub Action 可自动化构建、测试、发布、发布版本与部署等开发工作流。
  • Sponsor:您可以通过每月或一次性付款支持喜爱的开源项目或开发者,也支持使用如 ko-fi 等第三方支付平台。 

基础命令

在开始管理数据科学项目之前,我们先学习每个项目都会用到的常见 Git 命令。基础命令包括初始化 Git 仓库、保存更改、查看日志、将更改推送到远程服务器以及合并等。 

  • git init 在本地目录中创建一个 Git 仓库。

  • git clone <remote-repo-address>:从远程服务器复制整个仓库到本地目录。也可用于复制本地仓库。

  • git add <file.txt>:将单个或多个文件与文件夹加入暂存区。

  • git commit –m “Message”:创建变更快照并保存到仓库。 

  • git config 用于设置电子邮件、用户名、文件格式等用户级配置。 

  • git status 显示变更文件列表,或尚未暂存与提交的文件。  

  • git push <remote-name> <branch-name>:将本地提交发送到远程仓库的分支。  

  • git checkout -b <branch-name>:创建并切换到新分支。

  • git remote –v:查看所有远程仓库。

  • git remote add <remote-name> <host-or-remoteURL>:将远程服务器添加到本地仓库。 

  • git branch –d <branch-name>:删除分支。

  • git pull merge 将远程仓库的提交合并到本地目录。 

  • git merge <branch-name>:在解决合并冲突后,将所选分支合并到当前分支。

  • git log 显示当前分支的详细提交列表。

使用 GitHub 完成开发
使用 GitHub 完成开发

如果您想学习更多命令,请查看我们的 Git 速查表。 

开始上手

本节我们将使用 Git 跟踪一个数据科学项目,并使用 GitHub 作为远程服务器。我们将学习如何安装 Git、在 GitHub 上创建与克隆仓库、运行机器学习实验,并使用 Windows PowerShell 7 将更改(笔记本、模型、数据)推送到 GitHub。  

安装 Git

Git 支持所有主流操作系统。您可以使用命令行工具安装,或直接下载安装包进行安装。 

Linux

Debian/Ubuntu 系统使用 `apt-get install git`,若使用其它 Linux 发行版,请在此处查看完整的安装命令列表。

macOS

如果已安装 homebrew,使用命令 `brew install git` 下载并安装 Git。您也可以下载二进制安装程序并运行安装。

Windows

在 Windows 上安装 Git 非常便捷。访问下载页面,点击对应的 Windows 版本,下载并安装即可。如果已安装 winget 工具,可在 PowerShell 中输入 winget install --id Git.Git -e --source winget 进行安装。 

安装完成后,请务必配置用户名与邮箱。这些信息将用于签署提交。 

git config --global user.name "your-user-name"
git config --global user.email "your@email.com"

关于如何安装 Git 的深入信息,请点击这里。 

初始化项目

如果您已有 GitHub 账户,点击 + 按钮并选择新建仓库。随后输入仓库名称并添加简要描述,即可创建一个空的公共仓库。 

创建项目
创建项目

将远程仓库克隆到本地目录有多种方法,GitHub 提供了关于克隆、添加远程与初始化 Git 项目的详细指南。  

GitHub 克隆
GitHub 克隆

我们可以直接通过 HTTPS 链接克隆仓库。请确认您已在命令提示符或 PowerShell 中定位到工作目录。 

git clone https://github.com/kingabzpro/DataCamp-Git.git

>>> Cloning into 'DataCamp-Git'...
>>> warning: You appear to have cloned an empty repository.

cd .\DataCamp-Git\

新建名为“DataCamp-Git”的目录,并使用简单命令初始化 Git。之后添加远程仓库连接,以便与 GitHub 同步您的工作。

mkdir DataCamp-Git
cd .\DataCamp-Git
git init

>>> Initialized empty Git repository in C:/Repository/GitHub/DataCamp-Git/.git/

git remote add origin https://github.com/kingabzpro/DataCamp-Git.git

如果目录中已存在项目,只需使用 `git init` 初始化 Git,并按上方所示添加 GitHub 远程。 

简单提交

在向仓库添加文件前,请确保您位于正确的本地目录。 

我们先从简单开始,创建一个包含标题 DataCamp-Git 的 README 文件。然后使用 `git add` 将其加入暂存区。 

echo "# DataCamp-Git" >> README.md
git add README.md

Git status 显示我们位于 main 分支,且 `README.md` 文件已加入暂存区,准备提交。  

git status

>>> On branch main
>>> No commits yet
>>> Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.md

使用带消息的 `git commit` 创建首次提交。可以看到,首次提交的哈希为 ed9c886。

git commit -m "first commit"

>>> [main (root-commit) ed9c886] first commit
>>> 1 file changed, 1 insertion(+)
>>> create mode 100644 README.md

添加项目文件

我们将使用 DataCamp Workspace 的 使用 LSTM 和 GRU 的万事达股票价格 并下载文件。该项目作者已对数据进行了预处理,并在 LSTM 与 GRU 模型上训练时间序列数据。通过阅读 循环神经网络(RNN)教程 了解更多信息。

为保存模型文件,我们在项目的 Jupyter 笔记本中新增了一个代码单元。该脚本会创建名为“model”的新目录,并保存 LSTM 与 GRU 两个模型。 

!mkdir -p model
model_lstm.save('model/LSTM')
model_gru.save('model/GRU')

如您所见,Git 仓库包含存放 CSV 的 data 文件夹,以及包含模型权重与元数据的 model 文件夹。 

Git 数据文件夹

接下来我们将暂存所有文件。您可以在初始命令后添加任意目录、文件或数据。 

git add .\data .\model LSTM_GRU.ipynb RNN.png

如果您想将所有文件加入暂存区,请使用点号。 

git add .

提交并推送

我们将使用简单的消息提交所有更改,输出显示所有新文件处于创建模式。 

git commit -m "project files added"

>>> [main aa3e19a] project files added
>>>  10 files changed, 5020 insertions(+)
>>>  create mode 100644 LSTM_GRU.ipynb
>>>  create mode 100644 RNN.png
>>>  create mode 100644 data/Mastercard_stock_history.csv
>>>  create mode 100644 data/Mastercard_stock_info.csv
>>>  create mode 100644 model/GRU/saved_model.pb
>>>  create mode 100644 model/GRU/variables/variables.data-00000-of-00001
>>>  create mode 100644 model/GRU/variables/variables.index
>>>  create mode 100644 model/LSTM/saved_model.pb
>>>  create mode 100644 model/LSTM/variables/variables.data-00000-of-00001
create mode 100644 model/LSTM/variables/variables.index

与 GitHub 远程仓库同步需要指定远程名与分支名 `git push <remote-name> <branch-name>`。如果只有一个远程与一个分支,直接使用 `git push` 也可。  

执行 `git push` 后会弹出凭据窗口,输入您的 GitHub 用户名与密码即可。您也可以生成个人访问令牌并用以替代密码。阅读Git Push 与 Pull 教程了解更多。

git push

>>> Enumerating objects: 21, done.
>>> Counting objects: 100% (21/21), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (19/19), done.
>>> Writing objects: 100% (21/21), 1.83 MiB | 1.59 MiB/s, done.
>>> Total 21 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git.git
>>>  * [new branch]      main -> main

我们将查看 GitHub 仓库 kingabzpro/DataCamp-Git,确认是否已成功将更改推送到远程。该仓库包含所有文件、数据与模型。

推送至 GitHub 的远程仓库
推送至 GitHub 的远程仓库

Git 分支

建议使用分支工作:例如,若要编写项目文档,可使用 git checkoutgit branch 创建一个 documentation 分支。在 README 中修改内容,确定无误后,将该分支合并回基线。 

在本示例中,我们创建并切换到了名为 readme 的新分支。

git checkout -b readme

接下来通过为项目添加描述,并链接 RNN 的 DataCamp Workspace 与教程来编辑 README。然后暂存变更,并附上消息保存快照。

git add README.md
git commit -m "project description and links to blog"

>>> [readme f3b8b9b] project description and links to blog
>>>  1 file changed, 8 insertions(+)

远程仓库尚无 readme 分支。要创建新分支并推送更改,我们将使用 “readme:readme”。命令输出显示已创建新分支,且本地与远程的 `readme` 分支已同步。 

git push origin readme:readme
>>> remote: Resolving deltas: 100% (1/1), completed with 1 local object.
>>> remote: Create a pull request for 'readme' on GitHub by visiting:
>>> remote:  https://github.com/kingabzpro/DataCamp-Git/pull/new/readme
>>> remote:
To https://github.com/kingabzpro/DataCamp-Git.git
>>>  * [new branch]      readme -> readme

您可以看到,我们已成功将本地分支推送到 GitHub,并包含修改过的 README.md。 

GitHub 上的 readme 分支
GitHub 上的 readme 分支

拉取请求

此功能在组织内十分常见。例如,某位开发者完成了新功能,希望将更改合并到远程主分支。我们现在通过 GitHub 图形界面创建拉取请求:点击 Pull request 按钮,然后选择要与基线(main)合并的 readme 分支。您可以详细说明新增的功能,然后点击创建拉取请求。 

从 readme 向 main 分支发起拉取请求
从 readme 向 main 分支发起拉取请求

仓库维护者会对比您的更改,并在通过所有测试后合并。在本例中,您就是维护者,请点击合并请求,将更改合入主分支。 

GitHub 合并拉取请求
在 GitHub 上合并拉取请求

恭喜,您已成功创建拉取请求并将其合并至主分支。您可以在 这里 查看 main 分支上的更改。 

如需查看仓库中的全部更改,只需输入 `git log`,即可显示项目的历史变更。对数据科学项目进行变更记录至关重要,Git 也能帮助我们跟踪包括大型数据集在内的所有变更。 

Git 日志历史
Git 日志历史

结语

GitOps 对数据应用开发至关重要,已成为各类 IT 职位的必备技能;甚至学术研究者也在使用它们与更广泛的受众分享实验代码。另一方面,GitHub 通过为所有人提供免费的软件开发生态,在推动开源项目方面发挥着重要作用。 

在本教程中,我们了解了 Git 与 GitHub,以及它们为何对数据科学项目重要。教程还介绍了基础 Git 命令,并通过实践演示如何跟踪数据、模型与代码的变更。若您想进一步学习 Git,请在 DataCamp 上选修 Introduction to Git 课程。您也可以了解 GitHub Foundations 认证 的重要性,以及它如何助力您的职业发展。 

Git 常见问答

什么是 Git?

一款开源的分布式版本控制系统。它允许开发者在开发项目中存储、管理版本并可视化变更,促进灵活的团队协作与优化的工作流。 

Git 代表什么?

它不是一个首字母缩写词。其创建者 Linus Torvalds 表示,“Git 可以表示任何含义,取决于您的心情。” 它只是三个未被任何 UNIX 命令使用的随机字母的组合。  

如何克隆一个 Git 仓库?

只需在终端中输入 `git clone <remote repository address>`。您可以克隆本地和远程仓库,支持 SSH 与 HTTPS 协议。

如何在 Git 中删除分支?

删除本地分支使用 `git branch -d <local_branch_name>`,删除远程分支使用 `git push <remote_name> -d <remote_branch_name>`。

如何在 Git 中切换分支?

切换到已有分支使用 `git checkout <branch name>`,或使用 `git checkout -b <branch name>` 创建并切换到新分支。

如何安装 Git?

Linux 系统使用 `apt-get install git`,其他操作系统请参阅 git-scm.com

Git 是免费的吗?

是的,Git 在 GPL-2.0 许可下免费开源。

什么是 Git Bash?

它是一款 Microsoft Windows 应用,用于提供类 Unix 的 shell 工具与体验。 

如何在 Git 中创建新分支?

在终端中使用 `git branch <new-branch> <base-branch>`。要创建并切换到新分支,使用 `git checkout -b <branch name>`。

git pull 有什么作用?

它会从远程服务器更新本地仓库版本,复制远程仓库中的所有更改并与本地目录合并。此过程通常需要解决合并冲突。 

如何在 Git 中 Fork 仓库?

在 GitHub 中,Fork 是将他人账户下的仓库复制到自己 GitHub 账户的过程,通常用于社区贡献或团队协作。 

如何在 Git 中重命名分支?

本地分支重命名很简单:使用 `git branch -m <old-name> <new-name>`。重命名远程分支时,先用 `git push origin --delete <old-name>` 删除旧分支,然后推送新分支 `git push -u origin <new_name>`。

如何删除 Git 仓库?

您可以删除本地文件夹,或使用 `rm -fr .git` 移除 .git 文件夹。对于 GitHub,请进入仓库设置,在页面底部可以看到删除选项。

如何在 Windows 上安装 Git?

网站下载 Windows 安装程序并运行,安装过程会包含 Git Bash、Git CDM 和 Git GUI。

如何在 Git 中回退一次提交?

使用 `git revert <commit sha>`,其中需要指定某次提交的唯一哈希。您也可以使用 `git revert HEAD~2`,表示回退到距离当前 HEAD 两次提交之前的版本。   

主题