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


远程仓库简介

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. 拼sql条件时判断 是不是当前时间是不是周五,如果今天不是周五,就选上周五

    if (Request.QueryString["start"] == null) { for (int i = 0; i < 6; i++) { if (DateTime. ...

  2. 查询目前运行状态-CPU等情况

    对目前的数据库的运行状况有一个基本的了解 ) DB_NAME(a.dbid) AS dbname , loginame , spid , cpu , b.text , lastwaittype , w ...

  3. (转)C语言16进制输出字符型变量问题

    最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: char  ...

  4. python 装饰器修改调整函数参数

    简单记录一下利用python装饰器来调整函数的方法.现在有个需求:参数line范围为1-16,要求把9-16的范围转化为1-8,即9对应1,10对应2,...,16对应8. 下面是例子: def fo ...

  5. 安卓奇葩问题之:返回按键监听,使Dialog不消失

    本文出处:http://bbs.9ria.com/thread-204406-1-1.html 在做自动更新的时候,弹出Dialog提示,要求是只能点击更新或者取消更新时Dialog才会消失.但是在这 ...

  6. VM12安装OS X10.11步骤及说明

    参考文献: 1. http://www.crsay.com/network/enable-hardware-based-dep.html 2. http://jingyan.baidu.com/art ...

  7. Linux ARP缓存配置和状态查看命令

    查看Linux ARP缓存老化时间 cat /proc/sys/net/ipv4/neigh/eth0/base_reachable_time同目录下还有一个文件gc_stale_time,官方解释如 ...

  8. 再谈CSHELL对C程序员的价值

    几个礼拜前,介绍了CSHELL.http://www.cnblogs.com/hhao020/p/4974542.html今天再试着介绍下,希望能有更多C程序员留意到它,从中获益. 很多年前,我在调试 ...

  9. 分析Linux内核创建一个新进程的过程

    一.原理分析 1.进程的描述 进程控制块PCB——task_struct,为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct ...

  10. ubuntu下面mysql,通过载入txt文件初始化数据表

    环境:ubuntu12.04   mysql(通过apt安装) (1)根据数据表中的属性列,对应在txt中构造记录(一行对应一条记录),不同属性之间通过tab键(以/root目录下构建的init.tx ...