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. ...
随机推荐
- 虚拟机上安装Linux操作系统
很久之前就知道虚拟机这个东西,也都在虚拟机上安装过Windows的操作系统和Linux的操作系统,但是一直都没有去做笔记. 最近还是比较有时间,就移除了前两天刚刚安装的Linux系统,重新安装一次,做 ...
- OpenResty(nginx_lua_module)做ES代理以及备份ES数据
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- enum类型学习笔记
如:enum color {red,white,yellow,green} 枚举出一种类型中的多个变量 enum本质为int,可以作为int使用: enum默认值为0,1,2... 以上的定义中: e ...
- knapsack problem 背包问题 贪婪算法GA
knapsack problem 背包问题贪婪算法GA 给点n个物品,第j个物品的重量,价值,背包的容量为.应选哪些物品放入包内使物品总价值最大? 规划模型 max s.t. 贪婪算法(GA) 1.按 ...
- DWG2SHP DXF2SHP 如何把AutoCAD的DWG,DXF文件转换为Esri ArcGIS的Shape文件
dwg是AutoCAD创立的一种图纸保存格式,已经成为二维CAD的标准格式,很多其他CAD为了兼容AutoCAD,也直接使用dwg作为默认工作文件. 地图shape文件由ESRI开发,一个ESRI的s ...
- 通过json数据进行传递调用
最近在弄andriod的程序,需要调用web服务器上的数据,服务采用C#写的,并部署在iis服务器上.我们可以像.NET那样调用服务那,利用andriod库自带的HttpPost和HttpGet类来调 ...
- ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- Ubuntu搭建Ruby on Rails环境
安装Ruby 由于Ubuntu的apt包管理器的ruby版本过旧,故考虑从源码编译安装.这里以安装ruby2.3.0为例: sudo apt-get install build-essential z ...
- 最新基于adt-bundle-windows-x86的android开发环境筹建
最新基于adt-bundle-windows-x86的android开发环境搭建 某系统要配套做一个android客户端,来一次android开发环境快速搭建,系统Win7,具体步骤如下: 1.下载j ...
- PYTHON学习之路_PYTHON基础(3)
学习内容: 1.Python字典 2.Python集合 3.Python字符编码 4.Python文件操作 5.Python实例 一.Python字典 1.定义: dic1={'name':'alex ...