Git学习笔记(4)——添加远程仓库,克隆远程库,以及库的推送
本文记录了远程库的连接和库的克隆和推送。
远程仓库简介
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)——添加远程仓库,克隆远程库,以及库的推送的更多相关文章
- Git学习笔记(1)——安装,配置,创建库,文件添加到库
初次接触git,为了记忆深刻,把学习的简单流程记录下来. 本文记录了Git在Ubuntu上的安装,配置,以及创建版本库和往库中添加文件的过程. 1.Git的安装:(Ubuntu-Linux非常友好的安 ...
- git学习笔记02-创建一个仓库提交一个文件-原来就是这么简单
打开安装好的git bash,设置你的git信息 (这个随便写就行) 初始化一个Git仓库,分三步.(创建文件夹也可以手动创建,也可以命令行创建) 第一步,进到一个目录 cd e: 第二步,创建一 ...
- Git学习笔记3-远程仓库
1.添加远程仓库 $ git remote add [shortname] [url] $ git remote add origin https://github.com/Mike199201/Gi ...
- git 学习笔记 —— 获取远端分支并修改后提交至远端仓库
笔者最近进行开发过程中,所有参与者的代码需要通过 git 上传到远端仓库中,不同的模块对应不同的 git 分支,不同模块的数据需要从远端仓库中获取.这里记录下笔者从远端仓库中获取分支数据,进行修改,最 ...
- git学习笔记之一
Git是比较优秀的分布式版本管理工具,这次学习了git的基本命令,现在作一些归纳总结,已备复习之用. Git 认识 Git 直接用hash值记录提交的修改文件的快照,本地操作无需联网 Git 有三种状 ...
- Git 实用基础(配置,建库,提交,推送 GitHub)
Git 实用基础(配置,建库,提交,推送 GitHub) SVN ? Git ? 目前市面上主流的版本控制系统就是 SVN 和 Git . 两者的区别简单通俗地说就是,版本数据是否有在本地. 如果觉得 ...
- GIT学习笔记(2):时光机穿梭与远程仓库
GIT学习笔记(2):时光机穿梭与远程仓库 撤销操作 1.GIT如何跟踪修改 在我们修改了代码内容后,执行了git add和git commit命令来将其交由Git进行版本控制.我们前面举的例子是这样 ...
- Git学习笔记(二) 远程仓库及分支
添加远程仓库(以GitHub为例) 所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的.远程仓库的目的就是保证7*24小时开启状态.GitHub是一个很好的公共Git远程仓库(后面 ...
- 【Git学习笔记】远程仓库
第一种情景:本地初始化一个Git仓库后,接着又在github上创建了一个Git仓库,现在要让这两个仓库进行远程同步. 1. 关联本地仓库就和远程仓库 $ git remote add origin ...
- git——学习笔记(二)远程仓库
GIT杀手锏之一——远程仓库 拥有远程仓库的两个办法 1:搭一个Git服务器 2:在GitHub上免费托管的Git仓库 本地仓库 远程仓库 一.在GitHub上免费托管的Git仓库 电脑: 1. ...
随机推荐
- 数据库表映射到MyEclipse的实体对象
第一步:新增一个项目 第二步:在项目中新增一个包 第三步:将项目变为SSH (1)加Hibernate 选中项目点击右键,选择MyEclipse→project Facets→ 选择Hiberbate ...
- 亲测——pycharm下运行第一个scrapy项目 ©seven_clear
最近在学习scrapy,就想着用pycharm调试,但不知道怎么弄,从网上搜了很多方法,这里总结一个我试成功了的. 首先当然是安装scrapy,安装教程什么的网上一大堆,这里推荐一个详细的:http: ...
- SpringMVC文件上传下载
在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...
- (转)详解Linux Top 命令
top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界面如下图所视:
- jquery 模拟 alert 手机,pc,平板 3合一
$.kw = { title : "System information", //默认标题 可修改 speed : 400, //默认速度 可修改 buttonName : &qu ...
- C#学习感悟
上周虽然没上课,课上的内容是部分同学展示大作业成果,但是对于我来说,看了一些同学辛勤劳动的成果,听了他们对C#学习的一些感悟,我受益匪浅. 在这里我想谈谈我的收获.老师给的模板是todolist,但是 ...
- ubuntu安装octave的小坑
出现了以下情况: After this operation, 163 MB of additional disk space will be used.Do you want to continue? ...
- 从csdn博客搬家过来,请多关照!
之前一直在csdn博客,也写了不少关于java的文章,主要是学习java上的一些问题.想通过这种方式来加深对问题的认知,同时也可以帮助到志同道合的人,一起在编程的道路上共进,共勉.
- MYSQL中 ENUM 类型
MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...
- hdu 5106 组合数学+找规律
http://acm.hdu.edu.cn/showproblem.php?pid=5106 给定n和r,要求算出[0,r)之间所有n-onebit数的和,n-onebit数是所有数位中1的个数. 对 ...