Git 教程

这个章节描述了一般的 gitopen in new windowgithubopen in new window 工作流。

这不是全面的 gitopen in new window 参考。 它是为 githubopen in new window 托管服务量身定制的。 您可能会找到更好或更快的方法来完成gitopen in new window的工作,但这些应该可以让您开始。

有关学习 gitopen in new window 的一般资源,请参阅其他git资源open in new window

查看GitHub帮助open in new window中提供的githubopen in new window安装帮助页面

安装 git

使用git进行开发完全不需要github。 Git是一个分布式版本控制系统。 为了在您的机器上使用git,您必须安装它open in new window

获取代码的本地副本

在命令行中:

git clone git://github.com/numpy/numpy.git

现在,您在新的numpy目录中有了代码树的副本。 如果这样不起作用,您可以尝试使用其他只读网址:

git clone https://github.com/numpy/numpy.git

更新代码

您可能不时需要提取最新的代码。 为此,请执行以下操作:

cd numpy
git fetch
git merge --ff-only

现在,numpy 中的分支树将具有初始存储库中的最新更改记录。

Git开发入门

本节和下一节将详细描述如何设置git以使用NumPy源代码。 如果您已经设置了git, 请跳至开发工作流程

基本的Git设置

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

创建属于你自己的 NumPy 代码

您只需要这样做一次。 这里的说明与 http://help.github.com/forking/open in new window 上的说明非常相似 - 请参阅该页面以获取更多详细信息。 我们在这里重复其中的一些只是为了提供 NumPyopen in new window 项目的细节,并建议一些默认名称。

设置和配置github帐户

如果您没有 githubopen in new window 帐户,请转到 githubopen in new window 页面并创建一个。

然后,您需要配置您的帐户以允许写访问-请参阅github帮助open in new window上的 生成SSH密钥 帮助。

创建自己的 NumPy 分叉副本

  1. 登录到您的 githubopen in new window 帐户。
  2. 转到位于NumPyopen in new window github上的 NumPy githubopen in new window 主页。
  3. 点击页面上名为 fork 的按钮:

fork

稍等片刻后,您应该就能在你自己的主页上找到你自己的 NumPyopen in new window 分叉副本。

设置你的Fork

首先,您要遵循有关创建属于你自己的 NumPy 代码说明。

概览

git clone https://github.com/your-user-name/numpy.git
cd numpy
git remote add upstream https://github.com/numpy/numpy.git

详细

克隆你的fork仓库
  1. 使用 git clone https://github.com/your-user-name/numpy.git 将分叉克隆到你的本地计算机。

  2. 查看一下,然后将目录更改为新的repo:cd numpy。然后 git branch -a向您显示所有分支。您将得到如下内容:

    * master
    remotes/origin/master
    

    这告诉您您当前在 master 分支上,并且还具有到 origin/master 的远程连接。 哪个远程存储库是 origin/master ?尝试使用 git remote -v 查看远程URL。 他们将指向您的 githubopen in new window 分支。

    现在,您想连接到上游的 NumPy githubopen in new window 存储库,以便可以合并主干中的更改。

将您的存储库链接到上游仓库
cd numpy
git remote add upstream https://github.com/numpy/numpy.git

上游(upstream) 只是我们用来引用 NumPy githubopen in new window 上主要 NumPyopen in new window 存储库的任意名称。

只是为了您自己的满意,请使用 git remote -v show 向您展示一个新的 'remote',为您提供以下信息:

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

为了与NumPy中的更改保持同步,您需要设置存储库,以使其默认情况下从“上游”提取。 这可以通过以下方式完成:

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

您可能还想轻松访问发送到NumPy存储库的所有拉取请求:

git config --add remote.upstream.fetch '+refs/pull/*/head:refs/remotes/upstream/pr/*'
Your config file should now look something like (from ``$ 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/numpy.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[remote "upstream"]
        url = https://github.com/numpy/numpy.git
        fetch = +refs/heads/*:refs/remotes/upstream/*
        fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*
[branch "master"]
        remote = upstream
        merge = refs/heads/master

Git 配置

概览

您的个人 gitopen in new window 配置将保存在主目录的 .gitconfig 文件中。 这是一个示例 .gitconfig 文件:

[user]
        name = Your Name
        email = you@yourdomain.example.com

[alias]
        ci = commit -a
        co = checkout
        st = status -a
        stat = status -a
        br = branch
        wdiff = diff --color-words

[core]
        editor = vim

[merge]
        summary = true

您可以直接编辑此文件,也可以使用 git config --global 命令:

git config --global user.name "Your Name"
git config --global user.email you@yourdomain.example.com
git config --global alias.ci "commit -a"
git config --global alias.co checkout
git config --global alias.st "status -a"
git config --global alias.stat "status -a"
git config --global alias.br branch
git config --global alias.wdiff "diff --color-words"
git config --global core.editor vim
git config --global merge.summary true

要在另一台计算机上进行设置,您可以复制 ~/.gitconfig 文件,或运行上面的命令。

细节

配置 user.name 和 user.email

最好告诉 gitopen in new window 您是谁,以标记您对代码所做的任何更改。 最简单的方法是从命令行:

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

这会将设置写入您的git配置文件,该文件现在应包含带有您的姓名和电子邮件的用户部分:

[user]
      name = Your Name
      email = you@yourdomain.example.com

当然,您需要用您的实际姓名和电子邮件地址替换 Your Nameyou@yourdomain.example.com

别名

您可能会受益于一些常用命令的别名。

例如,您可能希望能够将 git checkout 缩短为 git co。 或者您可能想将 git diff --color-words 别名(给出diff格式正确的输出)的别名为 git wdiff

以下 git config --global 命令:

git config --global alias.ci "commit -a"
git config --global alias.co checkout
git config --global alias.st "status -a"
git config --global alias.stat "status -a"
git config --global alias.br branch
git config --global alias.wdiff "diff --color-words"

将在您的.gitconfig文件中创建一个别名部分,其内容如下:

[alias]
        ci = commit -a
        co = checkout
        st = status -a
        stat = status -a
        br = branch
        wdiff = diff --color-words

编辑器

您可能还需要确保使用了您选择的编辑器

git config --global core.editor vim

合并

在合并时要强制执行摘要(再次需要 ~/.gitconfig 文件):

[merge]
   log = true

或从命令行:

git config --global merge.log true

差异规格中的两个和三个点

感谢Yarik Halchenko的解释。

想象一下一系列的提交A,B,C,D ...想象有两个分支,主题和母版。 当母版处于提交 “E” 状态时,您从母版中分离了主题。 提交的图形如下所示:

     A---B---C topic
     /
D---E---F---G master

然后:

git diff master..topic

将输出从G到C的差(即受F和G的影响),而:

git diff master...topic

只会在主题分支中输出差异(即仅A、B和C)。

其他Git资源

教程和摘要

进阶git工作流程

有很多使用 gitopen in new window 的方法。这是其他项目提出的一些经验法则:

在线手册页

您可以使用(例如 git help push 或(类似的东西)git push --help)在自己的机器上获取这些信息, 但是为了方便起见,以下是一些常用命令的在线手册页: