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增加新功能。

 

posted @ 2018-07-27 21:01  彼岸花杀是条狗  阅读(255)  评论(0编辑  收藏  举报