1、注册登录

在 GitHub 上注册登录

暂时忽略不讲

2、创建新的远程仓库

在GitHub网站上创建新的仓库。不管你是先在本地创建仓库还是先在远程创建仓库,要想把代码提交到远程仓库都是要先手动创建一个远程仓库,然后再让两个仓库关联起来。

3、克隆远程仓库的两种方式及此时的关联

3.1、克隆的两种方式

3.1.1、使用SSH克隆及此时的关联

当我们先在GitHub上创建了新仓库,然后想把这个远程仓库克隆到本地的时候,可以使用 "git clone 仓库地址" 命令。

如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

$ git clone git://github.com/schacon/grit.git mygrit

使用克隆方式来将远程仓库克隆到本地时,Git 会自动将克隆的远程仓库命名为 origin ,而且将创建一个名为 master 的本地分支来跟踪远程分支 origin/master,你就能开始正常工作了。当然,你可以随心所欲地设定为其它跟踪分支,比如 origin 上除了 master 之外的其它分支。(刚克隆下来时可能找不到分支,这是因为你在GitHub和本地上什么提交都还没有,当你在GitHub或者本地上提交了一次之后就自动会生成了master分支,且这时本地的master与远程的master已经关联)

仓库地址可以在GitHub仓库上找到

可以看到,既有使用SSH的方式,又有使用HTTPS的方式。

3.1.2、使用HTTPS方式克隆

使用HTTPS 方式克隆命令:git clone HTTPURL   HTTPURL可以在远程仓库中找到,使用该方式可以只要知道URL就能直接克隆。但是每次往远程仓库 push 代码都需要输入账号和密码,这也是https方式的麻烦之处。

使用 http 方式克隆仓库时,要想 push 代码你必须是该仓库的拥有者或者拥有者把你添加为协作者(Collaborators)后你才能用通过输入你的邮箱和密码方式实现 push 。

3.2、SSH克隆方式的使用

使用 SSH 方式克隆后,不必在每次 push 代码是时输入密码,不过先要配置和添加 SSH Key 。

使用SSH 方式克隆命令:git clone sshURL    sshURL可以在远程仓库中找到,使用该方式可以只要知道URL就能直接克隆。

SSH 方式在每次fetch和push代码都不需要输入账号和密码,但是必须在本地配置 SSH Key ,然后再在拥有需要开发的项目的 GitHub 账号上添加 SSH Key。

3.2.1、生成 SSH Key(公钥和私钥)

$ ssh-keygen -t rsa -C "demo@qq.com"  

如果之前已经生成过你可以回车直接覆盖掉,生成过程会让你输入密码,可以不输入。直接回车直到生成成功。

注意:上面的邮箱地址可以随便写。

经查阅资料,上面的邮箱其实只是一个注释而已。当你创建ssh的时候:-t(The type of the key to generate 密钥的类型)、-C(comment to identify the key 用于识别这个密钥的注释) 。所以其实你可以输入任何字符串而不仅仅是邮箱(不知道是谁天天要输入邮箱,让我纠结了很久),SSH Key 只是作为远程仓库认可你这台主机的密码而已,远程仓库并不能通过该密钥识别出你的信息。

新理解:在本地配置不同的 user.email 时,所生成的 SSH Key 应该是不同的。而 GitHub 上能通过 SSH Key 得到提交者配置的 user.email ,因此也能得知提交者在 GitHub 上的账号名。

每次往远程仓库上提交时显示的提交者是在你配置 git 时的邮箱对应的账号名,即 git config --global user.email aaa.@qq.com,GitHub上会自动识别使用 aaa.@qq.com邮箱注册的账号的名字,然后以该名字作为每次提交的提交者名。如何没有以该邮箱注册的账号时,在GitHub上显示的提交者将会是在本地配置的 user.name。

(在下载Git 的时候有配置过选项 git config --global uer.name ,在Git上通过 git log 命令显示本地项目的提交版本时,可以看到 author 字段后面是配置的 uer.name ,但这个跟GitHub上显示的提交者应该是不同的概念,一个是作者,一个是提交者。提交者可以理解为你希望以这个GitHub 账号名来提交你的代码,而作者应该就是你配置的修改代码的作者名,可以理解为你本地的昵称)

3.2.2、查看生成的SSH Key(公钥)

$ cat ~/.ssh/id_rsa.pub

以上指令可以查看生成的公钥,公钥默认是放在 C:\Users\administrator\.ssh 目录下

3.2.3、在GitHub上添加 SSH Key

通过目录文件或者输入git命令查看公钥也就是 SSH Key,在GitHub上找到 Settings 选项,然后在 SSH and GPG keys 上添加 SSH Keys,也可以为添加的 key 命名。

使用 SSH Key 方式只有往GitHub上添加了 SSH Key 才能 push 代码。所以除非你是远程仓库的拥有者,或者别人把你的ssh key添加了进去,然后你才能 push 代码。总之,要想通过 SSH 方式提交代码,就必须添加 SSH Key。

注意:一个SSH Key只能被添加进一个GitHub账号上。

3.2.4、怎么理解 SSH Key

ssh是一种安全的传输模式,github要求推送代码的用户是合法的,所以每次推送时候都要输入账号密码(在GitHub上注册的账号和密码),用以验证你是否为合法用户。为了省去每次都要输入密码的步骤,采用shh来验证你是否为合法用户,在电脑生成一个唯一的ssh公钥和私钥(公钥在id_rsa.pub 文件中,私钥在id_rsa 文件中),然后把公钥放到github上面,当你推送的时候,git就会匹配你的私钥是否跟github上面的公钥是配对的,正确就认为你是合法的,允许推送。sshkey可以理解为是你的身份标识,添加在github上面表明你是这个项目的一个开发人员。

SSH Key生成时需要输入邮箱,这个邮箱你也可以输入别人的,但是仓库拥有者不一定会同意把你生成的这个公钥放进GitHub上,而且要冒充别人也没什么意义。

简单来说,ssh key是识别一台电脑的标识,通过 ssh 形式克隆时,只要你将这个标识放在 github 账号上,就能通过这台电脑拉取推送该账号上的代码。当管理员将你拉为成员时,你就能在自己的 github 账号上看到这个项目,就能对这个项目进行开发,往 github 账号上添加自己的 ssh key,就能识别你自己的电脑,就能通过该电脑拉取推送。

3.3、GitHub上压缩包下载、ssh和HTTP克隆的区别

(1)通过下载压缩包得到的 git 项目并没有 .git 文件,所以并不能进行查看git版本、拉取推送等操作。

(2)只有通过 ssh 或者 http 形式克隆才能通过 git 操作拉取推送代码,使用 http 形式第一次要输入密码,之后便不用了。

(3)通过HTTP形式克隆,需要输入账号密码,这个账号密码应该就是对应着你的 github 上的账号密码,当然,你也可以在自己的电脑上输入别人的 github 账号密码,这样的话你就是以别人的身份在进行操作,在 github 上显示的操作者也是你输入的账号实际拥有者。密码如果改了就会提示重新输入

3.4、GitHub 上的协作者

一个项目的拥有者可以在 GitHub 上添加自己的协作者,协作者在自己的 GitHub 账号上可以看到该项目(不知道是否是自动生成还是需要协作者手动 fork),然后协作者可以在自己的 GitHub 上对该项目进行操作修改。在修改完成后可以发起合并请求,当项目的拥有者同意合并时,原项目将发生修改。

4、先创建本地仓库再关联

(1)先在本地初始化一个本地仓库,在你想要创建仓库的文件夹下执行命令:

$ git init

(2)添加远程仓库

先创建一个远程仓库,比如在GitHub上创建一个远程仓库。

为本地新建的仓库添加一个远程仓库:

$ git remote add origin git://github.com/paulboone/ticgit.git    //origin 是你指定的远程仓库的名字,当然你也可以更改为其他的名字,但是一般来说默认的或者第一个远程仓库的名字就用 origin

(一个本地仓库可以添加多个远程仓库,但是不建议。如果有多个远程仓库时,往每个远程仓库提交代码都要指定远程仓库名,或者git会使用默认的远程仓库名)

(3)将本地仓库与远程仓库的master分支关联

添加完远程仓库后你就可以在本地仓库进行工作了,但是此时推送上远程仓库并不能成功,因为你还未将本地的任何分支与远程仓库的分支关联。

将本地仓库的master分支与远程仓库的master分支关联:

$ git push -u origin master  //origin 是远程仓库名,如果你远程仓库不是这个名字就改写成你添加远程仓库时指定的名字。该命名是省略了远程分支名

上面的命令将把本地的master分支推送到远程的master分支,并且使两个分支关联,此后再次在master分支上推送,只需执行: git push

(有可能出现以下情况:)

这是因为此时本地仓库还没有提交过,是空的,所以在本地仓库先提交一次版本即可

5、查看本地仓库添加的远程仓库(git remote)

要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库:

5.1、查看远程仓库对应的克隆地址(git remote -v)

5.2、查看某个远程仓库的详细信息(git remote show 仓库名)

除了对应的克隆地址外,它还给出了许多额外的信息。比如远程分支等

5.3、远程仓库的删除及重命名

(1)在新版 Git 中可以用 git remote rename 命令修改某个远程仓库在本地的简称,比如想把 yc02 改成 yyc,可以这么运行:

注意,对远程仓库的重命名,也会使对应的分支名称发生变化,原来的 yc02/master 分支现在成了yyc/master

(2)git remote rm 命令删除对应的远端仓库

远程仓库(GitHub)的使用的更多相关文章

  1. Git远程仓库(github

    一.创建远程仓库(github) 首先到https://github.com注册一个账号,创建自己的Git,点击repositories,再点new 名字自定义,比如叫fansik,选择public点 ...

  2. Git版本控制工具(三)----远程仓库GitHub的使用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. Git应用详解第五讲:远程仓库Github与Git图形化界面

    前言 前情提要:Git应用详解第四讲:版本回退的三种方式与stash 这一节将会介绍本地仓库与远程仓库的一些简单互动以及几款常用的Git图形化界面,让你更加方便地使用git. 一.Git裸库 简单来说 ...

  4. 【第十篇】- Git 远程仓库(Github)之Spring Cloud直播商城 b2b2c电子商务技术总结

    Git 远程仓库(Github) Git 并不像 SVN 那样有个中心服务器. 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作. 你就需要将数据 ...

  5. Git 连接远程仓库Github

    创建SSH Key. 在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shell(W ...

  6. 02-Git远程仓库Github

    1.Git远程仓库 (Gitgub网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已) 需要准备的东西: 1.准备Git源代码仓库https://github.com/ 2.准备李 ...

  7. 远程仓库 GitHub

    远程仓库 这里介绍的远程仓库指的是 GitHub, 在这个网站,所有非私有的的代码,都可以被其他人查看,所以,一些机密或者重要的文件千万不要上传到这里面,如果需要可以购买付费版本或自己公司搭建埃及的远 ...

  8. learn git(远程仓库github)

    |由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa ...

  9. Git初始化本地仓库及管理远程仓库github

    1.首先在本地安装git,地址:https://git-scm.com/downloads.下载安装好git工具. 2.将自己在github上的注册的用户名和邮箱写入本地git的配置文件中: (1). ...

  10. git远程仓库Github

    一.克隆项目 git clone 网址 1.配置信息 git config user.name '用户名' git config user.email '邮箱号' 2.推送项目到远程仓库 # 工作区代 ...

随机推荐

  1. js中return;、return true、return false的区别

    一.返回控制与函数结果, 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  二.返回控制, 无函数结果,语法为:return;  在大多数情况下,为事件 ...

  2. input只输入数字和小数后两位

    html:<input  name="" type="tel" value="" placeholder="请输入金额&qu ...

  3. 设计模式 - 装饰器模式(Decorator)

    简介 场景 通过继承和关联都可以给对象增加行为,区别如下: 继承是静态的(无法在程序运行时动态扩展),且作用于所有子类.硬编码,高耦合. 通过装饰器可以在运行时添加行为和属性到指定对象.关联关系就是在 ...

  4. pycharm常用快捷键 --- keymap==ecplise

    F5 进入函数逐行调试 F6 执行完一行代码 F8 执行到下一个断点处 ctrl + d    --删除一行代码 ALT + 上/下 箭头   代码上下移动 ALT + 左/右 箭头    左--返回 ...

  5. 2019/12/22 TZOJ

    4986 Team Formation http://www.tzcoder.cn/acmhome/problemdetail.do?&method=showdetail&id=498 ...

  6. ruby基本语法(2)

    关于数组 Ruby数组中的数据类型可以不相同并且长度也是可变的.(好聪明啊感觉用的久了就会变笨了,除非你本来就是老手)比如下面的例子 Myarray=[1,2,“ruby”] Ruby也支持那种-1的 ...

  7. out.write()和out.print()区别,jsp注释区别

    out.write()和out.print()结果一样,都是输出内容 前者输出html内容 后者输出变量 5 JSP注释 我们现在已经知道JSP是需要先编译成.java,再编译成.class的.其中& ...

  8. spring容器的启动过程

    spring的启动过程: 首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环 ...

  9. MySQL-第八篇MySQL内置函数

    1.根据函数对多行数据的处理方式,可以分为: 1>单行函数:对每行输入值进行单独计算,每行得到一个计算结果返回给用户.  2>多行函数:聚集函数.分组函数,主要用于完成一些统计功能.对多行 ...

  10. 最小生成树(prim和Kruskal操!!SB题)

    Arctic Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 30571   Accepted: 9220 D ...