远程仓库和GitHub — Git & GitHub(2)

说到Git就一定要说GitHub——全球最大的同性交友网站(咳咳!)

GitHub是一个提供Git仓库托管服务的网站,在这个网站上只要注册一个GitHub账号,就可以免费获得Git远程仓库。那么首先,我们还是先看概念,再看操作~

一、远程仓库

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。而这个原始的版本库,就是我们所说的远程仓库

远程仓库的运行机制呢,往往是找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

当然,我们也可以自己搭建一台Git服务器。但是现阶段,我们还是先来用现有工具——GitHub来看一看远程仓库怎么玩吧。

二、拥有自己的GitHub

1. 注册GitHub账号

这一步应该不用教....打开GitHub,自学成才(不认识英文的,就右键翻译网页呗)

2. 根据提示新建一个仓库

写完库名,其他默认。至于公开还是私有,就看你的心情了(同样,翻译大法好)。

下面,重点来了,开始关联本地与远程的仓库!!!

3. 设置免秘钥登录远程仓库,配置ssh

  1. 任意目录下打开 git bush ,依次输入,然后疯狂回车就行

    $ cd ~/.ssh
    $ ssh-keygen -t rsa -C "你的邮箱"
    
    • 这里的邮箱就是我们在之前配置git时候的邮箱,如果忘了,可以用 git config --list 进行查看。
  1. 然后我们可以看到命令行给我们一类似 C:\Users\XXX\.ssh 的路径。在这个路径下,找到这个文件 id_rsa.pub ,用编辑器或者记事本打开,里面就是我们等下要用到的公钥复制它!

  2. 打开GitHub,依次点击右上角头像SettingsSSH and GPG keysNEW SSH key

  • Title:可以随便填写。不过一台电脑一般对应一个SSH,为了便于管理,个人建议填写一个你一看就知道这个SSH对应哪台电脑的名字。

  • Key:直接粘贴刚才复制的公钥(SSH)

    填写完成后点击 Add SSH key 提交即可

  1. 转回头在 git bush 中输入命令检测是否连接成功:

    $ ssh -T git@github.com
    

    看到提示让你写 yes/no 的,输入 yes 就可以啦

    接着,如果你在 C:\Users\XXX\.ssh 的目录下,看到一个 known_hosts 的文件,那就证明连接成功了。

到此为止,你电脑中本地仓库的东西就可以开始往远程仓库里面传了,具体怎么传,往下看!

三、跟GitHub的第一次远程传输

直接开撸步骤:

  1. 找个合适的地方建个文件夹,同理,路径中不要有中文!

  2. 然后我们可以随便建一个文件,比如index.txt,里面随便写点东西。

  3. 右键点击 Git Bash Here ,输入 git init 初始化 git 仓库。

  4. GitHub打开刚才新建的仓库,按照下图依次点击① ②完成复制。注意在SSH模式下复制(红色箭头)

  1. 在bash命令窗口输入:

    $ git remote add origin 粘贴刚才复制的内容(不要Ctrl V,右键 → Paste粘贴)
    

    这里面的 origin 就是远程库的意思,是Git默认的叫法,也可以改成别的。

  2. 把本地库的内容推送到远程库上

    $ git push -u origin master
    

    把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令,去掉-u

    $ git push origin master
    
  3. 这时候我们再打开GitHub,会发现我们文件夹里的文件已经上传到远程仓库啦~(没看到的就刷新一下页面 )

四、日常与GitHub的基础交互

想象这么一个场景,有一天,你开始了一个新的项目。晚上准备关电脑休息,出于一个程序员的良好品质,你决定把项目随手保存到GitHub。于是你在GitHub上建了一个仓库,复制了SSH,然后你在项目的根目录下打开了 git bash 输入:

$ git remote add origin 粘贴刚才复制的内容(不要Ctrl V,右键 → Paste粘贴)

然后,你开始提交你的项目代码

$ git add -A
$ git commit -m "lalala"
$ git push origin master

就这样,你每天都在写代码,然后重复着 git addgit commitgit push 三连.....

很快,你的项目写完了,你分享给你的朋友们看,他们在你的GitHub上复制了你的SSH,然后建了个文件夹,打开了 git bash ,输入:

$ git clone 粘贴刚才复制的内容(不要Ctrl V,右键 → Paste粘贴)

这样,他们就拿到了的源码。于是,又有一天,你的一个朋友发现你有个地方有个bug,但是你抽不开手,想让他帮你改改。很快,他改好了,但是直接把代码发给你多low啊,于是.....

于是就涉及到多人协作了,关于如何在GitHub上进行多人协作,我们在后面了解过分支、标签的概念后,继续了解~~

五、扩充一:Git支持的协议

大家会发现,在GitHub除了 SSH 以外,还给出了 HTTPS 的传输协议,但是我们经常使用的是 SSH 地址,这是为什么呢?

实际上,Git支持多种协议,默认的 git:// 使用ssh,但也可以使用 https 等其他协议。

  • 通过 SSH 支持的原生git协议速度最快

  • 使用 https 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令

  • 但是在某些只开放http端口的公司内部,就无法使用ssh协议而只能用https

六、扩充二:关于SSH警告

当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了。

如果你实在担心有人冒充GitHub服务器,输入yes可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。

七、扩充三:只提交某个文件的内容

$ git status ./           查看这个文件夹下的文件状态,会列出有哪些没有加入追踪,哪些没有commit
$ git add ./*             把这个文件下的所有应该加入追踪的,加入到暂存区
$ git commit -m "日志描述" ./           把这个文件夹下可以commit的,都commit到本地库
$ git push                push到远程库

参考资料:
廖雪峰-Git
git单独只提交某个文件夹的简便操作方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348

推荐阅读更多精彩内容

  • 远程仓库 到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题...
    归云丶阅读 1,958评论 0 5
  • 远程仓库。 在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密...
    在你左右2018阅读 338评论 0 0
  • 1.GitHub 有什么用 学习优秀的开源项目开源社区一直有一句流行的话叫「不要重复发明轮子」,某种意义上正是因为...
    Clemente阅读 1,426评论 1 14
  • 该篇文章为学习廖雪峰git教程的总结,具体可移步廖雪峰老师git教程网站 Git介绍 Git是分布式版本控制系统。...
    Pig_deng饲养员阅读 964评论 0 1
  • Git 安装和使用教程 Git介绍 分布式:Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态的命...
    无名_ff98阅读 1,624评论 0 3