使用 Git 进行开发入门#

本节和下一节详细介绍如何设置 Git 来处理 SciPy 源代码。如果您已设置 Git,请跳至 开发工作流程.

基本 Git 设置#

  • 使用 Git 进行开发完全可以在没有 GitHub 的情况下进行。Git 是一个分布式版本控制系统。要使用 Git 在您的机器上,您首先必须 安装 Git.

  • 向 Git 介绍自己

    git config --global user.email you@yourdomain.example.com
    git config --global user.name "Your Name Comes Here"
    

创建您自己的 SciPy 副本(fork)#

您只需执行此操作一次。

  1. 设置并配置 github 帐户

    如果您没有 github 帐户,请访问 github 页面并创建一个。

    然后,您需要配置您的帐户以允许写入访问权限 - 请参阅 github 帮助 上的 Generating SSH keys 帮助。

  2. 接下来,创建您自己的 SciPy 的 fork 副本.

概述#

git clone https://github.com/your-user-name/scipy.git
cd scipy
git remote add upstream https://github.com/scipy/scipy.git
git submodule update --init

详细介绍#

克隆您的 fork#

  1. 使用 git clone https://github.com/your-user-name/scipy.git 将您的 fork 克隆到本地计算机

  2. 调查。更改目录到您的新 repo:cd scipy。然后使用 git branch -a 来显示所有分支。您将得到类似以下的内容

    * main
    remotes/origin/main
    

    这告诉您您当前位于 main 分支上,并且您还有一个到 origin/mainremote 连接。remote/origin 是哪个远程仓库?尝试使用 git remote -v 来查看远程的 URL。它们将指向您的 github fork。

    现在,您需要连接到上游 SciPy github 仓库,这样您就可以合并来自主干的更改。

将您的仓库链接到上游仓库#

cd scipy
git remote add upstream https://github.com/scipy/scipy.git

upstream 这里只是我们用来引用 SciPy 主仓库的任意名称,该仓库位于 SciPy github 上。

只是为了让您满意,您可以使用 git remote -v show 显示您现在有一个新的 ‘remote’,它将为您提供类似以下内容的内容

upstream     https://github.com/scipy/scipy.git (fetch)
upstream     https://github.com/scipy/scipy.git (push)
origin       https://github.com/your-user-name/scipy.git (fetch)
origin       https://github.com/your-user-name/scipy.git (push)

为了与 SciPy 中的更改保持同步,您需要设置您的仓库,使其默认从 upstream 中拉取。这可以通过以下命令完成

git config branch.main.remote upstream
git config branch.main.merge refs/heads/main

您的配置文件现在应该看起来像这样(来自 $ cat .git/config

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = false
[remote "origin"]
        url = https://github.com/your-user-name/scipy.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[remote "upstream"]
        url = https://github.com/scipy/scipy.git
        fetch = +refs/heads/*:refs/remotes/upstream/*
[branch "main"]
        remote = upstream
        merge = refs/heads/main

更新子模块#

初始化 Git 子模块

git submodule update --init

这将获取和更新 SciPy 所需的任何子模块(例如 Boost)。

下一步#

您现在可以使用 SciPy 开始开发。请查看 SciPy 贡献者指南 以获取更多详细信息。