zoukankan      html  css  js  c++  java
  • Github学习(一)

    什么是是Github?

    为开发者提供Git仓库的托管服务。

    Github与Git的区别:在Git,开发者将源代码存入名叫“Git仓库”的资料库中并加以使用。而Github则是在网络上提供Git仓库的一项服务

    使用Github会带来哪些变化

    1.协作形式变化:开发者之间引发化学反应的Pull Request.Pull Request是指开发者在本地对源代码进行更改后,向GitHub中托管的Git仓库请求合并的功能

                           对特定用户进行评论,任务管理和BUG报告可以通过Issue进行交互。如果想让特定用户来看,只要用“@用户名”的格式书写,对方便会接到通知。

                           GitHub Flavored Markdown:用户所有用文字输入的功能都可以用GitHub Flavored Markdown(GFM)语法进行描述。这个语法可以让标记变得简单,以此写出的评论与文档也会更容易理解

    2.能看到更多其它团队的软件:GitHub快捷的环境为开发者带来的合作伙伴,并不止局限于自己团队内部。只要将感兴趣的仓库添加至Watch中,就可以在News Feed查看该仓库的相关信息。

    3.与开源软件相同的开发模式

    GitHub提供的主要功能

    1.Git仓库

    2.Organization

    3.Issue

    4.Wiki:通过Wiki功能,任何人都能随时对一篇文章进行更改并保存,因此可以多人共同完成一篇文章。

    5.Pull Request

    Git的导入

    Git仓库管理功能是GitHub的核心。因此,使用GitHub之前必须先掌握Git的相关知识

    Git是分散型管理的代表:GitHub将仓库Fork给了每一个用户。Fork就是将GitHub的某个特定仓库复制到自己的账户下。Fork出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑。分散型拥有多个仓库,相对而言稍显复杂。不过,由于本地的开发环境中就有仓库,所以开发者不必连接远程仓库就可以进行开发。

    实际上,所有仓库之间都可以进行push和pull.即便不通过GitHub,开发者A也可以直接向开发者B的仓库进行push或pull.因此在使用前如果不事先制定规范,初学者往往会搞不清楚最新的源代码保存在哪里,导致开发失去控制

    使用Github的前期准备

    1.创建账户

    2.设置头像

    3.设置SSH Key:GitHUb上连接已有仓库时的认证,是通过使用了SSH的公开密钥认证方式进行的。我要要创建公开密钥认证所需的SSH Key,并将其添加至GitHub。

    4.添加公开密钥:在GitHub中添加公开密钥,今后就可以用私有密钥进行认证了。点击account Setting,选择SSH key菜单后,点击Add SSH Key,就会出现Title 和Key两个输入框

    5.使用社区功能:可以Follow关注他人

    一、GitHub中创建仓库

    创建一个公开的仓库。点击New repository

    1.Repository name

    2.Description:可以设置仓库的说明,这一栏不是必须项,可以留空

    3.Public、Private:这一栏可以选择Public还是Private.这里我们选择Public,创建公开仓库,仓库内的所有内容都会被公开。选择Private可以创建非公开仓库,用户可以设置访问权限,但这项服务是收费的。

    4.Initialize this repository with a README:在Initialize this repository with a README选项打勾,随后GitHub会自动初始化仓库并设置README文件,让用户可以立刻clone这个仓库。如果想向GitHub添加手中已有的Git仓库,建议不要勾选,直接手动Push

    5.Add .gitignore:他可以在初始化时自动生成.gitignore 文件。这个设定会帮我们把不需要在Git仓库中进行版本管理的文件记录在.gitignore文件中,省去了每次根据框架进行设置的麻烦

    6.Add a license:如果这个仓库中包含的代码已经确定了许可协议,随后将自动生成包含许可协议内容的LICENSE文件,yonglai 表明该仓库内容的许可协议。

    连接仓库

    1.README.md在初始化时已经生成好了。README.md文件的内容会自动显示在仓库的首页当中。因此,人们一般会在这个文件中标明本仓库所包含的软件的概要、使用流程、许可协议等信息。如果使用Markdown语法进行描述,还可以添加标记,提高可读性

    2.GitHub Flavored Markdown:在GitHub上进行交流时用到的Issue、评论、Wiki,都可以用Markdown语法表示,从而进行标记。

    公开代码

    1.clone已有仓库:clone时指定路径,尝试在已有仓库中添加代码并加以公开。这里会要求输入GitHub上设置的公开密钥的密码。认证成功后,仓库便会被clone至仓库名后的目录中。将想要公开的代码提交至这个仓库再push到GitHub的仓库中,代码便会公开

    2.编写代码

    3.提交:通过git add命令将文件加入暂存区,再通过git commit命令提交,添加成功后,可以通过git log命令查看提交日志

    4.进行push:之后只要执行push,GitHub上的仓库就会被更新。这样一来代码就在GitHub上公开。

    二、学习Git

    基本操作

    1.git init——初始化仓库。要使用Git进行版本管理,必须先初始化仓库。Git是使用 git init命令进行初始化的。请实际建立一个目录并初始化仓库。如果初始化成功,执行了git init命令的目录下就会生成.git目录。这个.git目录里存储着管理当前目录内容所需的仓库数据。在Git重,我们将这个目录的内容称为“附属于该仓库的工作树”。

    2.git status——查看仓库的状态。用于显示Git仓库的状态

    3.git add——向暂存区中添加文件。如果只是用Git仓库的工作树创建了文件,那么该文件并不会被记入Git仓库的版本管理对象当中。因此我们用git status命令查看README.md文件时,它会显示在Untracked files里。暂存区是提交前的一个临时区域。

    4.git commit——保存仓库的历史记录。该命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,可以在工作树复原文件。

    5.git log——查看提交日志。可以查看以往仓库中提交的日志,包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别。

    只显示提交信息的第一行——如果只想让程序显示第一行简述信息,可以在git log命令后加上——pretty=short。这样一来开发人员就能够更轻松地把握多个提交

    只显示指定目录、文件的日志——只要在git log后加上目录名,便会只显示该目录下的日志

    显示文件的改动——如果想查看提交所带来的改动,可以加上-p参数,文件的前后差别就会显示在提交信息之后。也可以在git log –p后加上指定文件

    6.git diff——查看更改前后的差别。git diff命令可以查看工作树、暂存区、最新提交之间的差别。

    查看工作树和暂存区的差别。直接执行git diff命令

    查看工作树和最新提交的差别。在执行git commit命令之前执行 git diff HEAD命令,查看本次提交和上次提交之间有什么差别,等确认完毕后再进行提交。这里的HEAD是指向当前分支中最新一次提交的指针。

    分支的操作

    在进行多个并行作业时,我们会用到分支。在这类并行开发的过程中,往往同时存在多个最新代码状态。master分支是Git默认创建的分支,因此基本上所有开发都是以这个分支为中心进行的。不同分支中,可以同时进行完全不同的作业。等该分支的作业完成之后再与master分支合并。

    1.git branch——显示分支一览表。带星号的分支为当前分支

    2.git checkout –b——创建、切换分支

    1.切换到featur-A分支并进行提交.  git checkout –b feature-A 实际上,连续执行下面两条命令也能受到同样效果。

    git branch feature-A   

    git checkout feature-A

    创建feature-A分支,并将当前分支切换为feature-A分支。这时再来查看分支列表,会显示我们处于feature-A分支下

    2.切换到master分支

    git checkout master

    3.切换回到上一个分支

    git checkout -

    特性分支

    特征分支顾名思义,是集中实现单一特性(主题),除此之外不进行任何作业的分支。在日常开发中,往往会创建数个特性分支,同时在此之外再保留一个随时可以发布软件的分支。稳定分支的角色通常由master分支担当。

    基于特定主题的作业再特性分支中进行,主题完成后再与master分支合并。只要保持这样一个开发流程,就能保证master分支可以随时供人查看。这样一来,其他开发者也可以放心大胆地从master分支创建新的特性分支。

    主干分支

    主干分支是刚才我们讲解的特性分支的原点,同时也是合并的终点。通常人们会用master分支作为主干分支。主干分支并没有开发到一半的代码,可以随时供他人查看

    git merge——合并分支。我们假设feature-A已经实现完毕,想要将它合并到主干分支master中。首先切换到master分支。git checkout master

                       然后合并feature-A分支。为了再历史记录中明确记录下本次分支合并,我们需要创建合并提交。因此,再合并时加上—no-ff参数。git merge –-no-ff feature-A

                       随后编辑器会启动,用于录入合并提交的信息。

    git log –graph——以图表形式查看分支

     

    更改提交的操作

    git reset——回溯历史版本

    回溯到创建feature-A分支前

    让我们先回溯到上一节feature-A分支创建之前,创建一个名为fix-B的特性分支

    要让仓库的HEAD、暂存区、当前工作树回溯到指定状态,需要用到git reset –hard命令。只要提供目标时间点的哈希值,就可以完全恢复至该时间点的状态

    消除冲突

    在合并的时候有可能发生冲突,有冲突是无法完成合并的。

    在冲突解决后,执行git add命令与git commit命令

     

     

    推送至远程仓库

    1.git remote add——添加远程仓库

    在GitHub上创建的仓库路径为“git@github.com:用户名/git-tutorial.git”.现在我们用git remote add命令将它设置成本地仓库的远程仓库

    2.git push——推送至远程仓库

    1.推送至master分支

    像这样执行 git push命令,当前分支的内容就会被推送给远程仓库origin的master分支。-u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。添加这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦

    git push –u origin master

    2.推送至master以外的分支

    除了master分支之外,远程仓库也可以创建其他分支。举个例子,我们在本地仓库中创建feature-D分支,并将它以同名的形式push至远程仓库

    git push –u origin feature-D

     

    从远程仓库获取

    上一节中我们把在GitHub上新建的仓库设置成了远程仓库,并向这个仓库push了feature-D分支。现在所有能够访问这个远程仓库的人都可以获取feature-D分支并加以修改

    1.git clone——获取远程仓库

    1.获取远程仓库

         首先我们换到其他目录下,将GitHub上的仓库clone到本地。注意,不要与之前操作的仓库在同一目录下。执行git clone 命令后,我们会默认处于master分支下,同时系统会自动将origin设置成该远程仓库的标识符

    2.获取远程的feature-D分支

    我们试着将feature-D分支获取至本地仓库。git checkout –b feature-D origin/feature-D

    -b参数的后面是本地仓库中新建分支的名称。为了便于理解,我们仍将其命名为feature-D,让它与远程仓库的对应分支保持同名。新建分支名称后面是获取来源的分支名称。例子中指定了origin/feature-D,就是说以名为origin的仓库的feature-D分支为来源,在本地仓库中创建feature-D分支

    3.向本地的feature-D分支提交更改

    4.推送 feature-D分支

    现在来推送feature-D分支。git push

    5.git pull——获取最新的远程仓库分支

    这边的本地仓库中只创建了feature-D分支,并没有在feature-D分支中进行任何提交。然而远程仓库的feature-D分支中已经有了之前推送的提交。这时我们就可以使用git pull命令,将本地的feature-D分支更新到最新的状态。当前分支为feature-D分支

    git pull origin feature-D

     

    GitHub端远程仓库中的feature-D分支是最新状态,所以本地仓库中的feature-D分支就得到了更新。今后只需要像平常一样在本地进行提交再push给远程仓库,就可以与其他开发者同时再同一个分支中进行工作,不断给feature-D增加新功能。

     

  • 相关阅读:
    Building a flexiable renderer
    Indirect Illumination in mental ray
    我的心情
    Cellular Automata
    Subsurface Scattering in mental ray
    Shader Types in mental ray
    BSP Traversal
    我的渲染器终于达到了MR的速度
    How to handle displacement and motion blur
    说明
  • 原文地址:https://www.cnblogs.com/yifdu25/p/9379624.html
Copyright © 2011-2022 走看看