git安装

linux上的安装

[cpp] view plaincopy

yum install git

windows上的安装

http://git-scm.com/download/win

下载安装即可。

安装完成后,还需要最后一步设置,在命令行输入:

git config --global user.name "Your Name"

git config --global user.email "email@example.com"

因为git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。然后在本机会生成一个.gitconfig文件,里面包含了user.name和user.email的信息。

WINDOWS下需要再添加一个配置,如下:

git config --global core.autocrlf false

如果没有加这个配置,在后续git操作的时候可能会报warning,如下:

这是因为在windows中的换行符为CRLF(\r\n), 而在linux下的换行符为:LF(\n)。

使用git来生成一个工程后,文件中的换行符为LF,在windows中,执行git add file操作时,系统提示:LF将被转换成CRLF。

CRLF -- Carriage-Return Line-Feed 回车换行,就是回车(CR,ASCII 13,\r) 换行(LF,ASCII 10,\n)。

git命令

git目录最好都不要包含中文名。

单机操作命令/单仓库命令

创建版本库repository

mkdir git_repo

cd git_repo

git init

会在目录中生成.git文件夹,该文件夹就是git仓库的管理文件,不要随意改动里面的内容。该文件夹默认是隐藏,ls命令看不到,用ls -ah命令可以看到。

新建一个file1.txt文件,文件内容如下(随意写的):

This is file1.txt.

for test~~~

把文件添加到代码库

git add file1 file2...

git commit -m "comment"

git add是把想要提交的文件先提交到commit缓存中;

git commit才是真正的文件提交。

通过git add命令,就等于是把文件加入到git管理中,会有各种git信息跟踪,比如代码版本号,修改了哪里等等。

查看代码仓库状态

git status

假设我修改了file1.txt文件内容如下:

hello everybody!

This is an file1.txt.

end file.

然后用git status命令看一下:

上面的提示告诉我们file1.txt被修改过了,但是还没有add到commit缓存中,即还没有准备提交(commit)。

查看修改内容

虽然git status告诉我们file1.txt被修改了,但是没告诉我们哪里被修改,为了具体查看文件什么地方被修改,就使用如下命令:

git diff file

git diff命令要在git add命令之前使用,否则一旦添加到commit缓存后,git diff命令就失效了。

通过git add后,再看git status状态,就变成了准备提交(commit)的状态了。

随后再git commit一下,就提交成功。

commit后,我们再看看git status,如下:

上图黄色框中说明当前目录多了个less文件是没有被git跟踪管理的,这个是我不小心加入的文件,在此无用,可以删去。如果是你需要的文件,那么就通过git add把它加入git管理。

删去了less文件后,看git status,如下所示:

查看两个版本之间的不同

git diff 版本1 版本2 [文件]

文件是可选的参数,不带[文件]参数的是比较所有的不同修改:

带[文件]参数的,你可以只查看某个文件的不同:

查看commit历史

git log

查看命令历史

git reflog

版本回退

git reset --hard HEAD^

git reset --hard HEAD@{4}

先用git log或者git reflog看下历史版本,然后用git reset 命令回退版本,如下:

git是用HEAD来表示当前分支中的当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本,以此类推,如果要回退很早的版本就用HEAD@{版本号},版本号用git reflog查看。

撤销修改

分3种情况

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file 或者 手动修改。

场景2:当你不但改乱了工作区某个文件的内容,并且还添加到了暂存区(即已经git add了)时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,可以用版本回退(参考版本回退一节),不过前提是没有推送到远程库。

下面举例说明:

场景1

如果文件还是在工作区中,还没有git add到暂存区,那么撤销修改有2种办法:,如下:

第1种办法:手动复原,把不想要的修改地方复原。(该方法可以只修改文件的一部分)

第2种办法:使用命令git checkout -- file。(这里的 -- 很重要,后续的版本分支也是是用git checkout命令,它没有 --)

(该方法只能全部复原文件,因为git checkout -- file其实就是把版本库中的file替换现在工作区的file)

场景2

当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步骤。

第1步:用命令git reset HEAD file,就回到了场景1;

第2步:按场景1操作。

git reset HEAD file命令是把缓存区中的file文件删去,对工作区后续做的修改并没有影响,比如上面的例子,git add后又修改了文件的内容everybody->chenj_freedom,git reset HEAD file后,file的内容还是chenj_freedom。

场景3

已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件/误删除还原

从版本库中删除文件

git rm file 或者 git add file

git commit

误删除复原

git checkout -- file

git checkout -- file其实就是用版本库中的file文件替换工作区的文件,所以无论工作区的file文件是被修改了还是被删除了,用这个命令都可以一键还原。

linux下git的HEAD,Git工具详解以及与GitHub的配合使用相关推荐

  1. Linux下各种后门和日志工具详解

    攻入Linux系统后,很多入侵者往往就开始得意忘形了.这其中还有一个原因,就是技术性也要求更高了.下面,我们来看看一些常用的经典工具.ChinaUnix个人空间DQOqY'{TChinaUnix个人空 ...

  2. linux中的文件夹压缩文件,linux将文件拷贝到目录下Linux下文件的压缩与打包详解...

    在Linux中,有很多的压缩命令.利用这些压缩命令,可以方便的从网络上下载大型的文件.同时,我们知道,Linux文件的扩展名是没有特殊意义的,不过,因为Linux下存在着许多压缩命令,所以为了方便记忆 ...

  3. linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解

    本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...

  4. Linux redis安装教程,Linux 下redis5.0.0安装教程详解

    Linux redis5.0.0安装,教程如下所示: 1.从官网下载,然后传到服务器,tar -zxvf解压 2.进入redis ? 3.安装:make, (1)若提示:: gcc: Command ...

  5. linux 更新软件命令 失败,对linux下软件(库)的更新命令详解

    在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区别 pip用来安装来自PyPI( ...

  6. linux系统电脑的权限设置,Linux下的文件权限设置修改详解linux操作系统 -电脑资料...

    在linux中更改所属用户组是使用chgrp,更改文件拥有者, chown,更改9个属性, chmod这三种常用的问题,在linxu中这三个命令就是对文件目录权限的控制命令了,下面我来介绍它们的用法与 ...

  7. linux下多线程的创建与等待详解 【转载】

    linux下多线程的创建与等待详解 http://blog.chinaunix.net/uid-23842323-id-2656572.html 所有线程都有一个线程号,也就是Thread ID.其类 ...

  8. linux下tar命令解压缩,tar解压缩命令 Linux下的tar压缩解压缩命令详解

    <tar解压缩命令 Linux下的tar压缩解压缩命令详解>由会员分享,可在线阅读,更多相关<tar解压缩命令 Linux下的tar压缩解压缩命令详解(14页珍藏版)>请在人人 ...

  9. kill -9 进程号杀不死可以用下面的杀掉 Linux下强制杀死进程的方法详解

    常规篇: 首先,用ps查看进程,方法如下: $ ps -ef -- smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ...

最新文章

  1. 李飞飞团队CVPR论文:让AI识别语义空间关系(附论文、实现代码)
  2. Chrome控制台实用指南
  3. ping 代理_Happy专访:Ping太高不是问题 换我不会像120一样比赛
  4. TokuDB在生产环境的应用场景(zabbix也可以)
  5. 50种优化数据库的方法
  6. 如何在单个测试中同时执行多个断言
  7. 基于深度学习的目标检测
  8. 笔记32 SpringMVC中使用静态资源、处理中文乱码
  9. 判断是否安装Alexa工具条
  10. 工控自动化通讯测试工具总结之--串口
  11. BC1.2 PD协议
  12. VUE仿知乎网站(三)首页主体部分开发
  13. 微信小程序(5)——如何制作好看的表格
  14. Deep Learning(深度学习)学习笔记整理
  15. 为啥是SoA?(SoA化的挑战)
  16. Addressable Asset System(进阶版AB)和AssetBundle(以下简称AB)制作的资源管理系统的对比
  17. 三菱fx2n64mr说明书_三菱基本单元 FX2N-64MR-001
  18. 使用Windows Server 2003轻松建立森林间信任
  19. 网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient
  20. (1)声明一个圆柱体类型,(2)声明属性:底边的半径,和高(3)声明方法:A:方法的功能:在方法中打印圆柱体的详细信息:圆柱体的底边的半径是xxx,高是xxx,底面积是xxx,体积是xxx。B

热门文章

  1. 使用聚类算法进行标签传播学习(Clustering for Semi-Supervised Learning)
  2. Pandas常见的数据过滤方法、通过列条件筛选行数据
  3. 认识计算机ppt课件游戏,认识计算机)ppt课件
  4. tf.keras.activations.sigmoid 激活函数 示例
  5. navicat的使用
  6. MFC libraries are required for this project. Install them from the Visual Studio installer (Individu
  7. 时间序列(五)股票分析
  8. Python变量作用域问题
  9. Linux750 权限,linux系统文件权限简明介绍
  10. 计算机对文字信息交流方式案例,《信息交流的方式》题本梳理_教师资格面试初中信息技术...