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

2020-02-03  本文已影响0人  docman

说到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

  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单独只提交某个文件夹的简便操作方法

上一篇下一篇

猜你喜欢

热点阅读