Git(二)Git几个区的关系与Git和GitHub的关联
前言
前面只是大概的介绍了一点基础的东西,接下来会更加深入的去了解一下Git。
一、Git的工作区、暂存区和版本库之间的区别和联系
1)工作区
在PC中能看得到的创建的一个管理仓库的目录。比如目录下GitTest里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
2)版本库(repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个
指针叫HEAD。
3)联系
在初始化git版本库之后会生成一个隐藏的文件 .git ,可以将该文件理解为git的版本库 repository,而我们自己建立的项目文件夹即工作区 working directory ,
在.git 文件夹里面还有很多文件,其中有一个index 文件 就是暂存区也可以叫做 stage ,git还为我们自动生成了一个分支master以及指向该分支的指针head。
从图中可以看出来respository包括分支master和stage, working diretory 可以理解为我们打开开发环境如eclipse,里面的内容即工作区的内容,在工作区里面
有的代码以及配置文件等我们需要提交到版本库里面,最终是到了分支master上面,暂存区只是一个临时保存修改文件的地方。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是:用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是:用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
4)编写一个Demo
我们在lance.txt再添加一行内容为eeeeee,接着在目录下新建一个文件为fosun.txt 内容为test,我们先用命令 git status来查看下状态,如下:
现在我们先使用git add . 命令把2个文件都添加到暂存区中,再使用git status来查看下状态,如下:
接着我们可以使用git commit一次性提交到分支上,如下:
注意:当在工作去修改了文件或者新建了文件没有加入到暂存区去时,使用git status显示的是红色的。加入到之后是绿色的了。
二、远程仓库
2.1、本地与远程GitHub的配置
在了解之前,先注册github账号,由于你的本地Git仓库和github仓库之间的传输是通过SSH加密的,所以需要进行简单的设置:
1)创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,
如果有的话,直接跳过此如下命令,如果没有的话,打开命令行,输入如下命令:
ssh-keygen -t rsa –C “youremail@example.com”
id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
2)登录github,打开” settings”中的SSH Keys页面,然后点击“Add SSH Key”,填上任意title,在Key文本框里黏贴id_rsa.pub文件的内容。
然后
然后
点击 Add Key,你就应该可以看到已经添加的key。
2.2、添加远程库
1)需求
我们已经在本地创建了一个Git仓库后,又想在github创建一个Git仓库,并且希望这两个仓库进行远程同步,
这样github的仓库可以作为备份,又可以其他人通过该仓库来协作。
2)首先,登录github上,然后在右上角找到“create a new repo”创建一个新的仓库。
然后
在Repository name填入GitTest
,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
目前,在GitHub上的这个testgit
仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,
然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的GitTest仓库下运行命令:
git remote add origin https://github.com/zyh2017/GitTest.git
git push -u origin master
把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,
还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。推送成功后,可以立刻在github页面
中看到远程库的内容已经和本地一模一样了,上面的要输入github的用户名和密码如下所示:
从现在起,只要本地作了提交,就可以通过如下命令:
git push origin master
把本地master分支的最新修改推送到github上了,现在你就拥有了真正的分布式版本库了。
2.3、从远程库克隆
上面我们了解了先有本地库,后有远程库时候,如何关联远程库。
现在我们想,假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?
举个简单的例子:
1)首先,登录github,创建一个新的仓库GitTest2
结果:
现在,远程库已经准备好了,下一步是使用命令git clone克隆一个本地库了。如下所示:
执行命令:
git clone https://github.com/zyh2017/GitTest2.git
结果:
喜欢就“推荐”哦!
- WordPress文章版权保护:复制文字自动添加版权信息
- 替换WordPress 自带默认的 jQuery库, jQuery库页脚加载
- Enterprise Library 4 数据访问应用程序块
- 替换EnterPrise Library 4.0 缓存应用程序块的CacheManager
- Enterprise Library 4.0缓存应用程序块
- 通过.htaccess 让WordPress 的上传文件夹更安全
- asp.net 性能调较
- 零基础学习大数据,搭建Hadoop处理环境
- 为你的WordPress 博客开启两步验证功能(技术支持:谷歌)
- 为你的WordPress 博客开启两步验证功能(技术支持:谷歌)
- WordPress 注册页面显示自定义提示信息
- Windows Server 2008密码重设盘
- Dynamite动态排序库
- WordPress 顶部管理工具条添加自定义栏目
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于闭包函数和递归函数的详细理解
- 新手怎么学JS?JavaScript基础入门
- 纯CSS制作加<div>制作动画版哆啦A梦
- Ubuntu 18.04 安装使用 Supervisor 进程守护并设置开机自动启动
- AWS CLI version 2 在 Windows 下的安装
- Vue事件绑定原理
- 组合
- 用navicat进行身份验证连接出现cannot connect to Mongodb authentication failed
- three.js中的矩阵计算
- ASP.NET Core 3.x Razor视图运行时刷新实时编译
- 线段树详解分析
- Centos 网卡命名规范及信息查看(物理网卡,虚拟网卡)
- 个人账号密码管理体系(账号篇)
- 当年偶然发现的 Java Bug(JDK 9及之前仍未修复)
- 干货 | 45张图庖丁解牛18种Queue,你知道几种?