Git--之本地仓库
VCS的历史 :
Git是一款代码管理工具(Version Control System),傲视群雄,是目前世界上最先进的免费开源的分布式版本控制系统,没有之一!
VCS版本控制系统(version control system),是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。用的比较多的如svn,git等。
1.本地版本控制

通过保存并管理文件补丁的方式,来记录对应文件修订前后的内容变化。目前最为流行的一种本地版本控制系统是rcs,所以,根据每次修订后的补丁,rcs可以通过不断打补丁,计算出各个版本的文件内容。当然这样做之后,对于本机被管理文件可以做到版本回滚或者回退,但是对于处在不同系统上的开发者要进行协同工作,就遇到了问题。于是也就有了“集中式版本控制工具”。
2. 集中式版本控制

集中式版本控制系统(Centralized Version Control Systems,简称 CVCS),版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器
这么做最显而易见的缺点是中央服务器的单点故障。如果维修一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。
相比老式的VCS,每个人能看到项目中其他人在干嘛,管理员也可以控制每个开发者的权限,但是一个致命的缺点就是中央服务器的单点故障。如果发生,谁都无法提交更新,无法协同工作,甚至有丢失数据的风险。至此,后来产生了“分布式版本控制工具”。
3. 分布式版本控制

客户端并不是提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来,分布式,当我们连接共享版本库时,可以先将服务器上的项目,克隆到本地,相当于每一台电脑上都有整个项目的文件备份,在没有网时也可以开发,完成开发后,可以先提交到本地仓库,当有网的时候,再提交到共享版本库,这样一来,如果我们的服务器或者我们自己的电脑出故障,我们也没有任何担心的。
Git的历史 :

起初参与Linux开源项目的代码是由Linus Torvalds本人通过“diff”和“patch”命令来手动为别人整合代码的。随着项目越做越大,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满。
diff介绍
diff A B > C
1.diff 命令比较文本文件。它能比较单个文件或者目录内容。
2.diff 命令只有当输入为文本文件时才有效。
3.如果指定了 Directory1 和 Directory2 参数,diff 命令比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。
4.diff命令用于比较两个文件的差异,它可以被制作成补丁文件,使用patch命令对相应的文件打补丁。
Git和SVN的区别
1. Git是分布式,SVN是集中式
2. Git的每个历史版本存储的是完整的文件,而SVN只是存储文件的差异
3. Git可以离线完成大部分操作,SVN不可以
4. Git有着更优雅的分支和合并实现
5. Git有更强的撤销修改和修改版本历史的能力
6. Git速度更快,效率更高
Git和Github的关系
1. Git是一个分布式的版本控制系统;
2.GitHub是一个基于Git的项目托管平台,它提供了web界面,我们可以在上面创建资源仓库来存放你的项目;
3.在本地或服务器创建一个资源仓库通过shell命令或图形用户界面可以和远端的GitHub进行项目同步更新,实现对项目的管理。
二:Git的安装
2.1:下载git客户端
链接:https://pan.baidu.com/s/1r-XCZtqA8qgdEKbPWo6rTA
密码:y4k3
2.2:安装git










可能出现的问题

这时候 以管理员身份运行cmd命令
msiexec /package 你将要安装的程序的完整路径及程序名 (注意空格)
例如: msiexec /package e:\git\xxx文件名 回车即可
三:Git入门
3.1:基本配置
我们本地仓库中的代码最终是要上传到GitHub中,而在上传的时候,必须要指定我们的信息,包括用户名和邮箱地址!方便团队或者项目组中其他人员知道是谁修改或者上传了代码!
所以我们首先要设置用户名和邮箱地址!
1.设置用户名和邮箱
安装成功之后,右键点击桌面空白位置===》Git Bash Here


git config --global user.name 用户名
git config --global user.email 邮箱地址
1. 修改用户信息
vim ~/.gitconfig

在这个文件中也可以,新增name和email

2. 删除用户信息

如果有多个用户,想删除指定的用户可以使用
git config --global --unset user.name 用户名
基本操作
创建本地仓库
git init

1. 创建并编辑文件
vim gitDemo.txt

内容如下

3. 将文件新增到暂存区

我们刚才创建的gitDemo.txt文件虽然在我们的仓库目录下,但是并没有被仓库所管理!
需要使用git add让文件被仓库管理(进入暂存区)

4.将文件提交到历史仓库

5.对文件进行修改



此时,我们对修改的文件有两种处理方式!
1. 确实需要修改,那么我们使用git add将文件放进暂存区
2. 如果是误修改,我们可以将文件回滚到之前的版本
6.对比文件差异

7. 撤销修改
这里的撤销指的是,我们修改的文件还没有被提交到暂存区!
之后,还有一种方式是===》已经提交到了暂存区之后怎么撤销?

3.3:工作区,暂存区,历史仓库
1.基本描述
我们使用了git init初始化git仓库之后,在文件夹中会多出一个.git隐藏文件夹!
这个.git隐藏文件夹就是git的版本库repository。
我们创建的myRepertory文件夹就是工作区 working directory。
暂存区:暂存区可以理解为一个虚拟工作区,这个虚拟工作区会跟踪工作区的文件变化(增删改等操作)。这个工作区的位于.git文件夹下的index目录下
2.注意点
1. 当需要对工作区的修改提交到版本库前,暂存区会与工作区进行差异比较,如果工作区与暂存区的文件不一致,那么需要同步工作区的修改到暂存区,然后才可以提交到版本库;
2. 暂存区可以说是工作区和版本库的桥梁,我们对文件的修改可以先放在暂存区中,如果后悔了不仅可以非常方便撤销,而且不会影响到现有的版本库;
3. 只要我们使用过git add,那么文件就会被跟踪,暂存区跟踪记录了工作区的文件名和文件状态(在index文件中会记录修改时间,文件大小等信息);
4. 下次我们对文件进行修改的时候,会比较时间戳来判断文件是否被修改,
在执行git status时,首先会到.git/index下查看被跟踪的工作区文件的时间戳,如果发现自上次执行git add(执行git add可以让工作区的文件被跟踪)以来,文件的时间戳发生了变化,那么判断文件发生了改动,于是会与暂存区的原始文件与工作区中的该文件进行差异比较,如果发现两个文件内容不一致,那么就给出差异信息。
3.实例演示



3.4:查询历史提交记录
1. git log

1. git log --pretty=oneline

也可以查询某个指定文件的提交历史

3.git reflog

4.git log和git reflog的区别
01.Git log查询的是commit id,作者以及提交时间和提交信息
但是不包括之前删除的历史记录
02.git reflog查询的是简洁的commit id和提交信息
也会包含之前删除的历史记录
3.5:回退历史版本
git reset 版本ID

3.6:撤销修改
这里的修改,就是我们的文件已经到达了暂存区了,需要把修改的文件还原到工作区!

3.7:误删除工作区的文件


3.8:真正删除文件

Git--之本地仓库的更多相关文章
- github仓库主页介绍、用git管理本地仓库和github仓库、搭建网站
github仓库主页介绍 名词解释: 工作区: 添加.编辑.修改文件等动作 暂存区: 暂存已经修改的文件,最后统一提交到git中 git(仓库): 最终确定的文件保存到仓库,成为一个新的版本,并且对他 ...
- Git单人本地仓库操作
本地仓库是个.git隐藏文件 以下为演示Git单人本地仓库操作 1.安装git sudo apt-get install git 密码:skylark 2.查看git安装结果 git 3.创建项目 在 ...
- 和同事合作开发,使用局域网 git创建本地仓库
转自原文 和同事合作开发,使用局域网 git创建本地仓库 1.仓库 建一个空文件夹来做仓库,例如建为 cangku 1.1 cd 到 cangku目录下 创建远程仓库容器 mkdir mycangk ...
- 使用Git初始化本地仓库并首次提交代码
本文介绍使用Git初始化本地仓库,并首次提交代码到远程仓库GitLab上面. 首先,登录GitLab,创建一个新项目的私人仓库: 然后,在本地仓库(就是你写代码文件夹),右键,Git Bash Her ...
- 使用 Git 删除本地仓库和远端仓库文件
使用 git bash 来删除 一.将文件(夹)添加到暂存区 这里假设本地和远端都有一个 test.txt 文件先在本地删除,通过 ·git status 查看通过git add test.txt 添 ...
- Git创建本地仓库&把pycharm项目添加GitHub仓库上
一.创建本地仓库 1.1.下载Git地址:https://git-scm.com/downloads 下载完,一路next就可以 1.2.打开Git Bash输入: #创建一个learngit目录 $ ...
- git原理-本地仓库认识
项目人员使用git,几乎70%的工作都是在本地仓库完成的.由此可见本地仓库的重要性. 下面我们就通过一些基本的命令讲下git的本地仓库的结构,存储流程,数据类型,如何存储...... 仓库结构 大家都 ...
- 如何使用Git建立本地仓库并上传代码到GitHub
使用Git建立本地仓库并上传代码到GitHub 工具/原料 电脑安装git客户端.注册github账号并登陆 方法/步骤 到本地项目文件夹右键选择git bash here 输入个人信 ...
- Git创建本地仓库
使用Git创建本地仓库, 可以记录文本文件变化, 这里以自己的文章为例, 利用TortoiseGit工具创建一个本地Git仓库. 1. 切换到需要创建仓库的目录下, 比如:D:\MyDoc\Devel ...
- Git 创建本地仓库
前面已经搭好环境了,现在我们缺的是一个管理版本控制的仓库.这次的实验是在电脑本地创建本地仓库.指定路径 默认的位置是在你所安装Git的目录下.Git的仓库你可以建在你电脑的任何目录下(最好不要包含有中 ...
随机推荐
- javaScript Number对象
Number 对象 Number 对象是原始数值的包装对象. 创建 Number 对象的语法: var myNum=new Number(value); var myNum=Number(value) ...
- E QUERY [main] SyntaxError: identifier starts immediately after numeric literal mongodb mapReduce 异常分析 集合命名规范
异常信息 repl_test:PRIMARY> db.0917order_totals_b.find()2018-09-28T15:13:03.992+0800 E QUERY [main] S ...
- 烂代码 git blame
关于烂代码的那些事(上) - Axb的自我修养 http://blog.2baxb.me/archives/1343 关于烂代码的那些事(上) 六月 21, 2015 57 条评论 目录 [显示] 1 ...
- javascript实例:两种方式实现tab栏选项卡
方法1: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- 老铁,这年头不会点git真不行
作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/ 版本控制 说到版本控制,脑海里总会浮现大学毕业是写毕业论文的场景,你电脑上的毕业论文一定出现过这番景象! 毕业论文_ ...
- Axure快捷键
基本快捷键: 打开:Ctrl + O 新建:Ctrl + N 保存:Ctrl + S 退出:Alt + F4 打印:Ctrl + P 查找:Ctrl + F 替换:Ctrl + H 复制:Ctrl + ...
- java定时器的使用(Timer)(转发:https://blog.csdn.net/ecjtuxuan/article/details/2093757)
1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等. 对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. private java.util.Tim ...
- Django工作小笔记
场景一:如果model中字段用CharField,然而你想用数字(类似IntegerField)排序,此时可以用django的extra函数直接调用原生sql的CAST函数即可 Score.objec ...
- 【Zookeeper】初识zookeeper
单机模式 安装并解压: 修改配置文件,conf/zoo.cfg(配置完成后,启动后,可以通过netstat-ano命令查看是否有你配置的clientPort端口号在监听服务) tickTime: zo ...
- 高阶函数,map,filter,sorted
Map:对列表中的每个元素进行操作 >>> def f(x): ... return x * x ... >>> map(f, [1, 2, 3, 4, 5, ...