说到Git就一定要说GitHub——全球最大的同性交友网站(咳咳!)
GitHub是一个提供Git仓库托管服务的网站,在这个网站上只要注册一个GitHub账号,就可以免费获得Git远程仓库。那么首先,我们还是先看概念,再看操作~
一、远程仓库
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。而这个原始的版本库,就是我们所说的远程仓库。
远程仓库的运行机制呢,往往是找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。
当然,我们也可以自己搭建一台Git服务器。但是现阶段,我们还是先来用现有工具——GitHub来看一看远程仓库怎么玩吧。
二、拥有自己的GitHub
1. 注册GitHub账号
这一步应该不用教....打开GitHub,自学成才(不认识英文的,就右键翻译网页呗)
2. 根据提示新建一个仓库
写完库名,其他默认。至于公开还是私有,就看你的心情了(同样,翻译大法好)。
下面,重点来了,开始关联本地与远程的仓库!!!
3. 设置免秘钥登录远程仓库,配置ssh
-
任意目录下打开
git bush
,依次输入,然后疯狂回车就行$ cd ~/.ssh $ ssh-keygen -t rsa -C "你的邮箱"
- 这里的邮箱就是我们在之前配置git时候的邮箱,如果忘了,可以用
git config --list
进行查看。
- 这里的邮箱就是我们在之前配置git时候的邮箱,如果忘了,可以用
然后我们可以看到命令行给我们一类似
C:\Users\XXX\.ssh
的路径。在这个路径下,找到这个文件id_rsa.pub
,用编辑器或者记事本打开,里面就是我们等下要用到的公钥。复制它!打开GitHub,依次点击右上角头像 → Settings → SSH and GPG keys → NEW SSH key
Title:可以随便填写。不过一台电脑一般对应一个SSH,为了便于管理,个人建议填写一个你一看就知道这个SSH对应哪台电脑的名字。
-
Key:直接粘贴刚才复制的公钥(SSH)
填写完成后点击 Add SSH key 提交即可
-
转回头在
git bush
中输入命令检测是否连接成功:$ ssh -T git@github.com
看到提示让你写
yes/no
的,输入yes
就可以啦。接着,如果你在
C:\Users\XXX\.ssh
的目录下,看到一个known_hosts
的文件,那就证明连接成功了。
到此为止,你电脑中本地仓库的东西就可以开始往远程仓库里面传了,具体怎么传,往下看!
三、跟GitHub的第一次远程传输
直接开撸步骤:
找个合适的地方建个文件夹,同理,路径中不要有中文!
然后我们可以随便建一个文件,比如index.txt,里面随便写点东西。
右键点击
Git Bash Here
,输入git init
初始化 git 仓库。在GitHub打开刚才新建的仓库,按照下图依次点击① ②完成复制。注意在SSH模式下复制(红色箭头)
-
在bash命令窗口输入:
$ git remote add origin 粘贴刚才复制的内容(不要Ctrl V,右键 → Paste粘贴)
这里面的
origin
就是远程库的意思,是Git默认的叫法,也可以改成别的。 -
把本地库的内容推送到远程库上
$ git push -u origin master
把本地库的内容推送到远程,用
git push
命令,实际上是把当前分支master
推送到远程。由于远程库是空的,我们第一次推送
master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令,去掉-u
:$ git push origin master
这时候我们再打开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 add
、 git commit
、 git 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单独只提交某个文件夹的简便操作方法