廖雪峰git 学习笔记(2)

远程仓库

  • git版本库如果保存在本地,可能会受到电脑宕机,硬盘损坏的影响,如何解决了,我们可以自己建一个git服务器,但是这有点麻烦,有一个叫github的网站,可以为git仓库托管的功能,如何使用了,如下步骤:

    1. 第一步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:

      • $ ssh-keygen -t rsa -C "[email protected]"这里的电子邮件,要和你配置git全局的时候一致哦,你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码
    2. 第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:

    3. 为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

      当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

      最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。

      如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备

$ git remote add origin git@server-name:path/repo-name.git  //具体地址可以在github你自己的仓库下面找到
$ git push -u origin master                                 //第一次推送master分支的所有内容,由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
$ git push origin master                                    //以后推送使用的命令
$ git clone git@github.com:michaelliao/gitskills.git         //克隆仓库到本地
  • 完成添加远程仓库所有步骤之后,发现推送本地仓库的时候出现了一下错误:
root@ubuntu:~/leran_git# git push -u origin master 
Warning: Permanently added the RSA host key for IP address '192.30.255.112' to the list of known hosts.
To [email protected]:dadatuYHD/learngit.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:dadatuYHD/learngit.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
  1. 网上查阅资料之后,发现是说github中的远程仓库里面存在一个文件README.md在本地仓库中不存在,所以无法推送,解决办法:
//可以通过如下命令进行代码合并注:[pull=fetch+merge]
git pull --rebase origin maste

你可能感兴趣的:(git)