本文记录了远程库的连接和库的克隆和推送。


远程仓库简介

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

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,

有个叫GitHub的国外网站,提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。类似的网站还有很多,比如:国内的开源中国的Git(本文使用的是国外的GitHub,网速有点慢)


SSH协议配置

和远程的版本库同步的时候,我们可以使用HTTPS协议或者SSH协议,SSH协议更安全,更快一些。根据自己的需求采用不同的方式。所以我使用安全更快一些的SSH协议。

查看是否已经产生了SSH所需的秘钥对

//查看你系统的家目录
ubuntu@myUbuntu:~$ pwd
/home/ubuntu
//.ssh文件是隐藏的
ubuntu@myUbuntu:~$

ls -

a
. .bashrc .dbus .ICEauthority .pki .sudo_as_admin_successful 公共的
.. .cache .dmrc joe .presage .Xauthority 模板
.bash_history .compiz .gconf .local .profile .xsession-errors 视频
.bash_logout .config .gitconfig .mozilla .ssh .xsession-errors.old 图片
//进入.ssh查看里面的文件
ubuntu@myUbuntu:~$

cd .ssh/

ubuntu@myUbuntu:~/.ssh$ ls
id_rsa id_rsa.pub known_hosts//有3个文件分别是私钥,公钥,以及已经相互建立的关联主机。
//主要是前2个秘钥的文件。你也可以查看一下里面的内容。
//如果没有,那么进行如下设置

设置SSH秘钥

//命令如下(邮箱换成自己的啊)
&ssh-keygen

-t rsa -C "youremail@example.com"

//设置的过程中,可能会问一些问题或者设置一些参数(不用慌,可以耐心的看一下这些问题,提高一下自己的英语。)使用默认值(直接回车)或者yes 就可以了。
//然后查看用户主目录下发现已经有了秘钥那2个文件了。

将自己的公钥告诉远程库,建立SSH连接。

利用你注册的账号,登录以后按照图片指示操作(也不必必须按照下面的来,你也可以自己摸索一下这个网站)。


添加远程连接

成功以后,首个库,网站会给你提示信息,如下(其中有2中协议HTTP和SSH,你可以选择,下面还有一些提示帮助,不放阅读一下。)


下载远程库和提交

摸索找到库的详细信息(如下网页)

//根据GitHub的提示,在本地的learngit仓库下运行命令:
$

git remote add origin git@github.com:michaelliao/learngit.git

//git@github.com:michaelliao/learngit.gi替换成复制的SSH,这里设置远程库的名字就是origin
//把本地的内容推送到远端库
$

git push -u origin master

    //实际上是把当前分支master推送到远程
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), 13.73 KiB, done.
Total (delta ), reused (delta )
To git@github.com:michaelliao/learngit.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
//由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
//从现在起,只要本地作了提交,就可以通过命令:
$

git push origin master


连接和推送时的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.
//这个警告只会出现一次,后面的操作就不会有任何警告了。

克隆库

上面说了那么多主要是建立连接,连接我们只建立一次就可以了.平时用的最多的是克隆和推送库.

ubuntu@myUbuntu:~/joe$ ls    //只有一个本地库
learngit
ubuntu@myUbuntu:~/joe$

mkdir testgit

    //新建一个本地库
ubuntu@myUbuntu:~/joe$

cd testgit/

ubuntu@myUbuntu:~/joe/testgit$ ls
ubuntu@myUbuntu:~/joe/testgit$

git init

    //库的初始化
初始化空的 Git 版本库于 /home/ubuntu/joe/testgit/.git/
ubuntu@myUbuntu:~/joe/testgit$

git clone git@github.com:joesGit15/git-test.git

    //克隆库
正克隆到 'git-test'...
remote: Counting objects: , done.
remote: Total (delta ), reused (delta ), pack-reused
接收对象中: % (/), 完成.
检查连接... 完成。
ubuntu@myUbuntu:~/joe/testgit$

ls

    //克隆成功
git-test
ubuntu@myUbuntu:~/joe/testgit$ cd git-test/
ubuntu@myUbuntu:~/joe/testgit/git-test$ ls
README.md

再次练习库的推送

ubuntu@myUbuntu:~/joe/testgit/git-test$ ls
README.md
ubuntu@myUbuntu:~/joe/testgit/git-test$

git status

    //查看库的状态
位于分支 master
您的分支与上游分支 'origin/master' 一致。
无文件要提交,干净的工作区
ubuntu@myUbuntu:~/joe/testgit/git-test$

vi README.md

 //修改文件
ubuntu@myUbuntu:~/joe/testgit/git-test$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动) 修改: README.md 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myUbuntu:~/joe/testgit/git-test$

git add README.md

 //添加
ubuntu@myUbuntu:~/joe/testgit/git-test$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区) 修改: README.md ubuntu@myUbuntu:~/joe/testgit/git-test$

git commit -m "test"

    //提交
[master c287068] test
file changed, insertion(+)
ubuntu@myUbuntu:~/joe/testgit/git-test$ git status
位于分支 master
您的分支领先

'origin/master' 共

 个提交。//只有提交以后,才会显示不一致
(使用 "git push" 来发布您的本地提交)
无文件要提交,干净的工作区
ubuntu@myUbuntu:~/joe/testgit/git-test$ git push origin master//推送
对象计数中: , 完成.
写入对象中: % (/), bytes | bytes/s, 完成.
Total (delta ), reused (delta )
To git@github.com:joesGit15/git-test.git
111509c..c287068 master -> master
ubuntu@myUbuntu:~/joe/testgit/git-test$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。
无文件要提交,干净的工作区

Git学习笔记(4)——添加远程仓库,克隆远程库,以及库的推送的更多相关文章

  1. Git学习笔记(1)——安装,配置,创建库,文件添加到库

    初次接触git,为了记忆深刻,把学习的简单流程记录下来. 本文记录了Git在Ubuntu上的安装,配置,以及创建版本库和往库中添加文件的过程. 1.Git的安装:(Ubuntu-Linux非常友好的安 ...

  2. git学习笔记02-创建一个仓库提交一个文件-原来就是这么简单

    打开安装好的git bash,设置你的git信息  (这个随便写就行) 初始化一个Git仓库,分三步.(创建文件夹也可以手动创建,也可以命令行创建) 第一步,进到一个目录  cd e: 第二步,创建一 ...

  3. Git学习笔记3-远程仓库

    1.添加远程仓库 $ git remote add [shortname] [url] $ git remote add origin https://github.com/Mike199201/Gi ...

  4. git 学习笔记 —— 获取远端分支并修改后提交至远端仓库

    笔者最近进行开发过程中,所有参与者的代码需要通过 git 上传到远端仓库中,不同的模块对应不同的 git 分支,不同模块的数据需要从远端仓库中获取.这里记录下笔者从远端仓库中获取分支数据,进行修改,最 ...

  5. git学习笔记之一

    Git是比较优秀的分布式版本管理工具,这次学习了git的基本命令,现在作一些归纳总结,已备复习之用. Git 认识 Git 直接用hash值记录提交的修改文件的快照,本地操作无需联网 Git 有三种状 ...

  6. Git 实用基础(配置,建库,提交,推送 GitHub)

    Git 实用基础(配置,建库,提交,推送 GitHub) SVN ? Git ? 目前市面上主流的版本控制系统就是 SVN 和 Git . 两者的区别简单通俗地说就是,版本数据是否有在本地. 如果觉得 ...

  7. GIT学习笔记(2):时光机穿梭与远程仓库

    GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 1.GIT如何跟踪修改 在我们修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制.我们前面举的例子是这样 ...

  8. Git学习笔记(二) 远程仓库及分支

    添加远程仓库(以GitHub为例) 所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的.远程仓库的目的就是保证7*24小时开启状态.GitHub是一个很好的公共Git远程仓库(后面 ...

  9. 【Git学习笔记】远程仓库

    第一种情景:本地初始化一个Git仓库后,接着又在github上创建了一个Git仓库,现在要让这两个仓库进行远程同步. 1. 关联本地仓库就和远程仓库  $ git remote add origin ...

  10. git——学习笔记(二)远程仓库

    GIT杀手锏之一——远程仓库 拥有远程仓库的两个办法 1:搭一个Git服务器  2:在GitHub上免费托管的Git仓库 本地仓库   远程仓库 一.在GitHub上免费托管的Git仓库 电脑: 1. ...

随机推荐

  1. 来自MarsEdit的博客测试

    使用MarsEdit编辑的第一个测试博客. 希望我们一帆风顺! 插图,在插图时可以调整尺寸:   六种公式写法,记得要在选项中打开-启用数学公式: \begin{equation}\sum\end{e ...

  2. codingNet项目的创建

    首先,在codingNet上面创建一个项目(一般情况下) 然后,在本地打开项目并添加到储存库 其次,提交代码到已经创建好的项目中(注意赋值远程存储库的路径)

  3. button、label、textfield、页面跳转、传值

    .AppDelegate.m #import “OneViewController.h” //一打开就运行的 -(BOOL)application:(UIApplication *)applicati ...

  4. 32位Windows 7系统下,显示4G内存3G可用的原因。

    由于32位操作系统只有那么多物理地址可用, 而硬盘.光驱.声卡,显卡,无线网卡等硬件设备也需要分配物理地址才可以使用, 所以系统会把一部分物理地址分配给它们, 剩下的物理地址分配给内存使用, 而剩下的 ...

  5. Samba的安装与配置

    Samba的安装与配置: 准备:关闭其他虚拟设备 #/etc/init.d/libvirtd stop #/etc/init.d/xend stop #chkconfig libvirtd off # ...

  6. 关于display: box 和 box-flex

    这两天做手机项目,使用到这个css3新属性.现在还不为所有浏览器支持,所以使用的时候要加上前缀.使用方法见下面: html代码: <div class="s-indLine" ...

  7. 实验一报告--认识DOS

    实验一  DOS命令解释程序的编写 13物联网             黄鸿佳              201306104107 一. 实验目的 (1)认识DOS: (2)掌握命令解释程序的原理: ...

  8. [UE4]AnimDynamics简介

    AnimDynamics简介 Author:Jia Zhipeng AnimDynamics是UE4.11 Preview 5测试版本发布的AnimationBlueprint中的新节点.功能是通过简 ...

  9. linux添加新LUN,无需重启

    linux添加新LUN,无需重启 在给存储增加新的Lun时,在linux下一般是: A.重启操作系统B.重启HBA卡驱动 1. kudzu添加完新硬盘后,运行命令kudzu重新扫描新的硬件设备,类似a ...

  10. haproxy的使用

    假如 www.example.com想要使用haproxy作为代理,则要在自己的 dns服务器设置AAAA记录对应于haproxy机器的IP. 这样访问www.example.com其实就访问了hap ...