一、git简介:

  Linux创建了Linux,但是Linux的发展壮大是由世界各地的热心志愿者参与编写的?那么那么多份的代码是怎么合并的呢?之前是在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!  

   Git是由Linus花了两周时间自己用C写了一个分布式版本控制系统 。2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

二、集中式的版本控制系统和分布式版本控制系统的不同
  集中式的版本控制系统: 代表有CVS 、SVN

  特点: 版本库集中存放在中央服务器 必须联网才能工作 如果中央服务器的代码被恶意修改了,所有人的代码都可能会有问题
只能跟踪文本文件的改动,比如txt文件,网页,所有的程序代码等

  分布式版本控制系统的是 Git

  特点: 版本库在自己的电脑上 不需要联网也能工作 安全性高 只能跟踪文本文件的改动,比如txt文件,网页,所有的程序代码等
强烈建议使用UTF-8编码 所有语言使用同一种编码,既没有冲突,又被所有平台所支持

三、 安装Git

在Linux上安装Git

1. 如果碰到Ubuntu或Debian 请使用下面命令:

$ git //这条命令检查系统中是否有Git

sudo apt-get install git // 如果没有,则使用这条命令来进行安装Git

2. 如果碰到的是 CentOS 请使用下面命令:

$ git // 这条命令检查系统中是否有Git

sudo yum install git

在Windows上安装Git

1. 如果是32位系统 请使用安装包

[32位系统的Git](./Other/Git-2.14.3-32-bit.exe)

2. 如果是64位系统 请使用安装包

[64位系统的Git](./Other/Git-2.14.3-64-bit.exe)
在Mac OS 上安装Git

自己上Git官网搜索 直接下载使用

四、Git安装好了,那么下面我们来一起使用

版本仓库(repository),那么说是一个文件夹更好理解

> 1. 选择一个合适的地方,创建一个空目录

#打开命令行工具,输入命令 代表新建了一个名字为git的文件夹
mkdir git

# 进入Git文件夹中
cd git

# 查看该文件夹的绝对位置(在windows中) **如果看到输入的pwd中有中文 请确保你的路径中没有中文**
pwd

> 2. 把刚才创建的文件夹目录变成git可以管理的仓库

# 初始化仓库
git init

# 如果你的文件夹中没有任何内容将会得到如下输出结果 代表是初始化了一个空的Git仓库

Initialized empty Git repository in F:/git/.git/

注意: 在使用之前我们来理解一些概念  -----工作区和暂存区---

> 名词解释

1.工作区(Working Directory)      :   就是你在电脑里能看到的目录,比如我的GitHub文件夹目录

2.版本库(Repository):     在工作区有一个隐藏目录.git,这个就是Git的版本库

3.暂存区:    在版本库中存在一个成为Stage的暂存区,它是专门存储修改和添加的区域。一旦提交后,如果你又没有对工作区做任何修改,那么暂存区就是干净的
 
## 管理修改(需要案例证明)
为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
> Git不会提交没有放到暂存区的修改
这里我画了一个图方便大家理解

看了这个图是不是理解了他的工作机制了呢?
下面继续-------------------------------------------------
1  现在我们编写一个first.txt 文件,并把该文件提交修改到git版本库
# 把要提交的文件添加到版本库
git add 文件名

# 把要提交的文件提交到版本库
git commit -m "本次提交的说明"

我们再次对文件进行修改  
#查询工作区和版本库的文件状态,红色的代表修改后的文件在工作区,没有添加到暂存区或者提交

#我们来 把刚才的修改后的文件添加和提交一下

> 2. 查看提交的日志记录

# 查看我们提交的历史记录
git log 或 git log --pretty=oneline

git log --pretty=oneline 这个命令让每次提交信息都在一行显示 更清晰直观  前面一串字母和数字代表了每次提交的id号,我们可以根据id 和提交信息找到对应的文件版本,是不是很方便呢


再修改提交几次

next 就是怎么找回以前版本-----惊喜在下面!!!!!

> 3. 版本回退

# 把版本回退到前面的版本 当前版本 HEAD 上一个版本HEAD^ 往上100个版本 HEAD~100
git reset --hard HEAD^
当前版本查询(fourth commit)

上一版本查询(second commit)

......

> 4. 查看自己的每一次命令的记录

# 如果回退到某一个版本之后又后悔了,那么可以再回到某一次提交,这时可以查看自己的写过的命令
git reflog (可以看到全部的提交信息,及版本回退记录)

这时候根据id和提交信息就可以轻松找回你需要的那个版本了

> 5. 回到某一次的提交

# 回到某一次提交就要找到某一次提交的id ,使用fit reflog可以查看自己的命令id
git reset --hard id号(比如找回第四次提交的版本)git reset --hard 第四次提交版本的id号,这样当前版本就是第四次提交的版本啦

## 撤销修改

> 1.当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

命令: git checkout -- file

> 2.当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改

1. git reset HEAD file
2. git checkout -- file

## 删除文件

> 1.确实要删除

git rm  文件名  把文件删掉
通过git 和 commit 操作的文件 如果在文件夹中 自己手动删除 Git是能跟踪到的
使用 git status

> 2.删错了

git checkout -- files

注意:命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
现在你可能遇到了两种情况:
1 在git commit 之前 那么就用git checkout -- .\rewrite.txt 撤销
2 如果在git commit之后 那么就用git reset -- hard id 就可以回退到你删除的这个文件版本下

## 创建与合并分支

> 1.查看分支

git branch

> 2.创建分支

git branch 分支名字

> 3.切换分支

git checkout 分支名字

> 4.合并某分支到当前分支

git merge 分支名字(不是当前的分支)

> 5.删除分支

git branch -d 分支名字

## 解决冲突
出现冲突
1 在主分支上有一个文件 confit.txt
2 然后新建一个分支queen
3 切换到新分支
4 在这个新分支上建一个文件 confit.txt
5 更改文件的内容 在新分支上提交
6 切换分支到主分支 ,修改confit.txt(和在新分支上修改同一行)
7 提交
8 合并分支,即出现了冲突

解决方案:商量保留谁提交的内容,然后手动删除被舍弃的内容,最后执行添加并修改

##bug分支

情景:undong.txt 工作还没做完(暂存区有很多add文件,这时还没有commit),这时接收到一个必须在两小时内完成的bug文件(和之前的工作无关)
1 这时就要保存工作现场 git stash
2 添加新分支 git branch fixbug
3 切换到这个分支 git checkout fixbug
4 git add bug文件
5 提交 git commit
6 删除该分支(一般情况应该合并)
查看分支现场 git
7 修复之前的分支 git stash pop

Git 命令行使用的更多相关文章

  1. Git命令行(转用于学习和记录)

    Git命令行介绍和使用说明(持续更新) 参见:<Git 中文简体教程> 一. 命令“git”或者“git help”查询常用命令 [add]: “git add”——不但是用来添加不在版本 ...

  2. windows下使用TortoiseGit代替Git命令行操作

    windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...

  3. git命令行工作的正确姿势

    git命令行创建并提交新分支到mater分支的常规步骤 git branch new_branch git status 查看修改的文件 git add changed_files git commi ...

  4. 【重要】使用Git命令行上传到GitHub上

    [本人GitHub账号:] 用户名:chenhongshuang 密码:shuangshuang6300 邮箱:2452420371@qq.com 进入GitHub账号后 1·新建项目文件名称例dem ...

  5. git 命令行

    在使用 git 命令行之前需要下载安装软件官方网站:https://git-scm.com/window 或者 mac 等其它版本自行下载 使用方法一:安装后在项目文件夹中右键菜单会有个 Git Ba ...

  6. git命令行工作环境配置【转】

    转自:http://www.cocoachina.com/ios/20171115/21163.html 本文为CocoaChina网友whf5566投稿 前言 笔者一直使用git的图形化工具sour ...

  7. git 命令行下浏览器tig使用记录

    git 命令行下浏览器tig使用记录 tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. 以下是一些使用记录: 安装成功后,在 Repo 文件夹下, ...

  8. Git的基本使用方法和安装&心得体会(使用git命令行)

    这是补发的,使用命令行操作的. (1)选择本地repository的路径 找到后点鼠标右键,选择git bash here. (2) clone到本地 在命令行输入 git clone ADDRESS ...

  9. 每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1

    每日一条 git 命令行:git clone https://xxxxx.git -b 12.0 --depth 1 -b 12.0:分支 12.0 --depth 1:depth 克隆深度,1 为最 ...

  10. 如何通过Git命令行把代码提交到github上

    1.http://www.cnblogs.com/leesf456/p/5169765.html   参考博客 背景:最近入手了mac,看见mac上的大神都是在用git命令行推代码,我很羡慕有木有,好 ...

随机推荐

  1. 详解为什么设置overflow为hidden可以清除浮动带来的影响

    1.问题起源 在平时的业务开发写CSS中,为了满足页面布局,元素的浮动特性我们用的不能再多了.使用浮动的确能够解决一些布局问题,但是也带了一些副作用影响,比如,父元素高度塌陷,我们有好几种可以清除浮动 ...

  2. 3d转化

    3d转化 想要实现3d效果,首先要确定的是观察点,这是2d转换所不需要的.具体的我也看的很糊涂,美术什么的根本不懂好吗. 但有些东西是确定的,perspective定义的是3d元素距视图的距离,因此像 ...

  3. [Vuex系列] - 细说state的几种用法

    state 存放的是一个对象,存放了全部的应用层级的状态,主要是存放我们日常使用的组件之间传递的变量. 我们今天重点讲解下state的几种用法,至于如何从头开始创建Vuex项目,请看我写的第一个文章. ...

  4. iOS常用宏定义大全

    宏定义与常量的区别 宏:只是在预处理器里进行文本替换,不做任何类型检查,宏能定义代码,const不能,多个宏编译时间相对较长,影响开发效率,调试过慢,const只会编译一次,缩短编译时间. 所以在使用 ...

  5. ulimit用法

    ulimit -a:显示当前所有的资源限制 -c:core文件大小 -f:设置创建文件的最大值 -n:设置内核可以同时打开的文件描述符的最大值 -p:设置管道缓冲区的最大值 -s:设置堆栈的最大值 - ...

  6. IE浏览器下载后台返回的Excel文件,报错400

    问题描述(见下图): 问题分析: 400是后端没有接收到请求 原因是后端高版本的tomcat不会自动对字符串进行转义 所以,前端把参数值进行转义,即encodeURI(string) 问题处理前代码( ...

  7. 《数据结构与算法之美》 <06>栈:如何实现浏览器的前进和后退功能?

    浏览器的前进.后退功能,我想你肯定很熟悉吧? 当你依次访问完一串页面 a-b-c 之后,点击浏览器的后退按钮,就可以查看之前浏览过的页面 b 和 a.当你后退到页面 a,点击前进按钮,就可以重新查看页 ...

  8. [Python] Codecombat攻略 远边的森林 Forest (1-40关)

    首页:https://cn.codecombat.com/play语言:Python 第二界面:远边的森林Forest(40关)时间:2-6小时内容:if/else.关系操作符.对象属性.处理输入网页 ...

  9. Java字节码文件结构剖析

    今天起开启JVM的新的知识学习篇章----Java的字节码,那学习Java字节码有啥用呢?我们知道Java是跨平台的一门语言,编写一次到处运行,而支撑着这个特性的根基为两点:JVM和.class字节码 ...

  10. C语言实现的文件交互

    计算机与外部设备的交互依靠文件完成 文件是记录在外部介质上的数据的集合:例如1.c 是源码 1.exe可执行的文件 文件的分类 按组织结构: 记录文件:有一定结构的文件,可以解析成字段值的文件: 流式 ...