linux下git的HEAD,Git工具详解以及与GitHub的配合使用
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的配合使用相关推荐
- Linux下各种后门和日志工具详解
攻入Linux系统后,很多入侵者往往就开始得意忘形了.这其中还有一个原因,就是技术性也要求更高了.下面,我们来看看一些常用的经典工具.ChinaUnix个人空间DQOqY'{TChinaUnix个人空 ...
- linux中的文件夹压缩文件,linux将文件拷贝到目录下Linux下文件的压缩与打包详解...
在Linux中,有很多的压缩命令.利用这些压缩命令,可以方便的从网络上下载大型的文件.同时,我们知道,Linux文件的扩展名是没有特殊意义的,不过,因为Linux下存在着许多压缩命令,所以为了方便记忆 ...
- linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解
本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...
- Linux redis安装教程,Linux 下redis5.0.0安装教程详解
Linux redis5.0.0安装,教程如下所示: 1.从官网下载,然后传到服务器,tar -zxvf解压 2.进入redis ? 3.安装:make, (1)若提示:: gcc: Command ...
- linux 更新软件命令 失败,对linux下软件(库)的更新命令详解
在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区别 pip用来安装来自PyPI( ...
- linux系统电脑的权限设置,Linux下的文件权限设置修改详解linux操作系统 -电脑资料...
在linux中更改所属用户组是使用chgrp,更改文件拥有者, chown,更改9个属性, chmod这三种常用的问题,在linxu中这三个命令就是对文件目录权限的控制命令了,下面我来介绍它们的用法与 ...
- linux下多线程的创建与等待详解 【转载】
linux下多线程的创建与等待详解 http://blog.chinaunix.net/uid-23842323-id-2656572.html 所有线程都有一个线程号,也就是Thread ID.其类 ...
- linux下tar命令解压缩,tar解压缩命令 Linux下的tar压缩解压缩命令详解
<tar解压缩命令 Linux下的tar压缩解压缩命令详解>由会员分享,可在线阅读,更多相关<tar解压缩命令 Linux下的tar压缩解压缩命令详解(14页珍藏版)>请在人人 ...
- kill -9 进程号杀不死可以用下面的杀掉 Linux下强制杀死进程的方法详解
常规篇: 首先,用ps查看进程,方法如下: $ ps -ef -- smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ...
最新文章
- 李飞飞团队CVPR论文:让AI识别语义空间关系(附论文、实现代码)
- Chrome控制台实用指南
- ping 代理_Happy专访:Ping太高不是问题 换我不会像120一样比赛
- TokuDB在生产环境的应用场景(zabbix也可以)
- 50种优化数据库的方法
- 如何在单个测试中同时执行多个断言
- 基于深度学习的目标检测
- 笔记32 SpringMVC中使用静态资源、处理中文乱码
- 判断是否安装Alexa工具条
- 工控自动化通讯测试工具总结之--串口
- BC1.2 PD协议
- VUE仿知乎网站(三)首页主体部分开发
- 微信小程序(5)——如何制作好看的表格
- Deep Learning(深度学习)学习笔记整理
- 为啥是SoA?(SoA化的挑战)
- Addressable Asset System(进阶版AB)和AssetBundle(以下简称AB)制作的资源管理系统的对比
- 三菱fx2n64mr说明书_三菱基本单元 FX2N-64MR-001
- 使用Windows Server 2003轻松建立森林间信任
- 网络摄像机IPCamera RTSP直播播放网络/权限/音视频数据/花屏问题检测与分析助手EasyRTSPClient
- (1)声明一个圆柱体类型,(2)声明属性:底边的半径,和高(3)声明方法:A:方法的功能:在方法中打印圆柱体的详细信息:圆柱体的底边的半径是xxx,高是xxx,底面积是xxx,体积是xxx。B
热门文章
- 使用聚类算法进行标签传播学习(Clustering for Semi-Supervised Learning)
- Pandas常见的数据过滤方法、通过列条件筛选行数据
- 认识计算机ppt课件游戏,认识计算机)ppt课件
- tf.keras.activations.sigmoid 激活函数 示例
- navicat的使用
- MFC libraries are required for this project. Install them from the Visual Studio installer (Individu
- 时间序列(五)股票分析
- Python变量作用域问题
- Linux750 权限,linux系统文件权限简明介绍
- 计算机对文字信息交流方式案例,《信息交流的方式》题本梳理_教师资格面试初中信息技术...