https://blog.csdn.net/qicheng777/article/details/74724015#commentBox

每日诗词欣赏:《汉广》

南有乔木,不可休思。汉有游女,不可求思。 
汉之广矣,不可泳思。江之永矣,不可方思。 
翘翘错薪,言刈其楚。之子于归,言秣其马。 
汉之广矣,不可泳思。江之永矣,不可方思。 
翘翘错薪,言刈其蒌。之子于归,言秣其驹。 
汉之广矣,不可泳思。江之永矣,不可方思。

git和svn一样,是一款强大的版本控制系统软件,它和svn有一些区别,目前从我现在对svn以及git学习以后来看,git似乎更强大一点,因为git可以在没有网络的情况下也可以提交(因为git是分布式的),而svn在操作之前必须先checkout远程仓库。但是svn有个优点(有全局额版本号),在回退到各版本的时候比较方便。

一、关于软件安装
1、首先查看是否以及安装了git:
rpm -qa | grep xxx 查询某个安装包 
rpm -ql xxx :查询某个包安装路径 
或者直接在终端敲git,如果已经安装会提示你命令使用方法。

2、linux下安装:
sudo yum install git

3、设置当前用户信息
[yangni@yangni fistlab]$ git config --global user.name "yangni"   
[yangni@yangni fistlab]$ git config --global user.email 497049229@qq.com
用于在查询历史的时候文件显示由谁修改过。

二、基本操作:
1、创建仓库:
[yangni@yangni fistlab]$ git init 
Initialized empty Git repository in /home/yangni/git/fistlab/.git/ 
 
创建成功后用命令ls -a可以查看到出现了隐藏文件.git

2、添加并提交文件到仓库:
[yangni@yangni fistlab]$ git add text.txt

[yangni@yangni fistlab]$ git commit -m "write text.txt" 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 text.txt

-m后面是注释的内容,告诉别人自己修改了什么。

3、修改文件:
对每个文件修改后用git status可以查看当前每个文件的状态。

运行git status,提示我们已经被修改过了,但是没有提交。

查看修改具体内容: 
用命令git diff可以用来查看修改了什么内容。

修改以后再次添加并提交: 
[yangni@yangni fistlab]$ git add text.txt 
[yangni@yangni fistlab]$ git commit -m "modified the text.txt by yangni on july 6th" 
[master fc82b20] modified the text.txt by yangni on july 6th 
1 files changed, 1 insertions(+), 1 deletions(-) //这里提示一增一减

再一次查看status: 
[yangni@yangni fistlab]$ git status 
# On branch master 
nothing to commit (working directory clean) //告诉我们没有需要提交的东西

查看历史修改情况(修改时间,修改人): 
用git log查看历史修改情况

[yangni@yangni fistlab]$ git log

前面的字符是用16进制的数表示版本号。

这样看清来有点乱,我们用命令git log --pretty=oneline可以减少输出信息。

4、回退到之前的版本:
查看当前版本: 
[yangni@yangni fistlab]$ git reset --hard HEAD 
HEAD is now at 0998adb add text2 and modify text by yangni 
退到上一个版本: 
[yangni@yangni fistlab]$ git reset --hard HEAD^^ 
HEAD is now at 7c97a69 write text.txt

HEAD表示当前版本,HEAD^表示上一个版本,同理HEAD^^表示上上个版本。。。。不过这样太麻烦。所以如果要往上回退100个版本,则写成 HEAD~100

也可以通过git log查看id直接指定回到哪:(id号可只取前两位,为了避免相同,可以多取几位) 
[yangni@yangni fistlab]$ git log 
[yangni@yangni fistlab]$ git reset --hard id号

上面的方法有些弊端,因为git log**只能查看近几次的id**,如果关掉电脑或者要回退到很久之前的版本就无法实现了。所以下面提供更实用的方法:

Git提供了一个命令git reflog用来记录你的每一次命令 
[yangni@yangni fistlab]$ git reflog 
7c97a69 HEAD@{0}: HEAD^^: updating HEAD 
0998adb HEAD@{1}: commit: add text2 and modify text by yangni 
fc82b20 HEAD@{2}: commit: modified the text.txt by yangni on july 6th

[yangni@yangni fistlab]$ git reset --hard id号//这里id号必须写完整

注:(这里每个圈代表一个版本)

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL:

5、管理修改:
git add是把文件的某次修改放入暂存区,所以修改以后必须先add再提交才生效。

git diff HEAD -- xxx命令可以查看对于某个文件来说,工作区和版本库里面最新版本的区别:

撤销修改: 
(1)只是修改,并没有添加: 
所以可用git checkout -- file来恢复修改之前的模样 (–后面有个空格) ,其实是用版本库里的版本替换工作区的版本(一键还原)

[yangni@yangni fistlab]$ git checkout -- text.txt

(2)已经添加,还未提交: 
用 git reset HEAD 文件名恢复到提交之前:

[yangni@yangni fistlab]$ git reset HEAD text.txt

6、删除文件:
(1)直接rm: 
[yangni@yangni fistlab]$ rm text2.txt 
[yangni@yangni fistlab]$ git status

git会告知你删除了哪个文件: 
 
用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。

**所以如果用rm误删以后,可以很快用命令git checkout -- file找回。。 但是git commit -m " "提交的时候,并不会将删除操作提交上去。

所以如果想要提交删除操作,让文件在版本中删除,必须要用-am提交 
[yangni@yangni fistlab]$ git commit -am " "

(2)用git rm删除 
用 git rm 来删除文件,同时还会将这个删除操作记录下来,提交以后直接可以从版本中删除。

总结一下删除的两种方法: 
在被 git 管理的目录中删除文件时,可以选择如下两种方式来记录删除动作:

rm + git commit -am "abc"
git rm + git commit -m "abc"
参考博客: 
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
--------------------- 
作者:qicheng777 
来源:CSDN 
原文:https://blog.csdn.net/qicheng777/article/details/74724015 
版权声明:本文为博主原创文章,转载请附上博文链接!

Linux下git操作(一)——git基本命令相关推荐

  1. linux下从git获取有权限的代码,linux下从源代码安装git

    之所以有这样的需求,是因为部分预安装的git版本太低,很多功能没有并且安全性存在问题. 比如git submodule add xxx@host:yyy.git必须在父repo的root目录安装,而新 ...

  2. linux git源代码安装,linux下从源代码安装git

    之所以有这样的需求,是因为部分预安装的git版本太低,很多功能没有并且安全性存在问题. 比如git submodule add xxx@host:yyy.git必须在父repo的root目录安装,而新 ...

  3. Linux下PDF操作与转换

    Linux下PDF操作与转换 2013-07-02 09:44:58 分类: LINUX 如果说PDF是电子纸张,那么pdftk就是电子起钉器.打孔机.粘合剂.解密指环和 X光镜片.Pdftk是一个简 ...

  4. linux 查询内存和核心数,Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数...

    1.查看物理CPU的个数 [root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc ...

  5. linux修改目录block信息,linux下文件操作inode,block的变化

    在"浅谈linux性能调优之三:分区格式化之前的考虑" http://my.oschina.net/sharelinux/blog/143522    一文中我说了inode与bl ...

  6. mysql5.6.24安装perl,linux下perl操作MySQL数据库(需要安装DBI)

    这篇文章主要为大家详细介绍了linux下perl操作MySQL数据库(需要安装DBI),具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!DBI安装:D ...

  7. linux flash擦除命令,Linux下flash操作读、写、擦除步骤

    描述 1. 背景介绍 在板上,ZYNQ PL部分通过EMC连接一片NOR FLASH,地址空间如下: 可以看到NOR FLASH的起始地址为0x80000000,这是物理地址,可以把数据存放在以该地址 ...

  8. linux拷贝文件函数,linux下文件操作的各个函数

    作者:HoytEmail:hoytluo@21cn.com 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 --------- ...

  9. linux下python操作.doc后缀文件

    linux下python操作.doc后缀文件 文章目录 linux下python操作.doc后缀文件 一.依赖 1.下载 2.解压安装 二.使用示例 一.依赖 需要安装Microsoft® Word的 ...

  10. linux下搭建简单的git服务器测试1

    这两天沉迷PHP web服务器开发不能自拔,但是php和html.js之类的程序要写一点看一点效果,我是放到Linux云主机上测试的,所以要在xshell上写代码,很麻烦. 于是想自己在云主机上搭建一 ...

最新文章

  1. 30+博士、100+硕士整理的超全深度强化学习资源清单
  2. Android之DiskLruCache源码解析
  3. wex5 转换 html5,WeX5开发工具(html5 app开发框架)V3.9 开源版
  4. UE3客户端加入DS过程
  5. DWZ(JUI) 教程 跨域请求 iframeNavTab
  6. 2013\Province_Java_C\2.组素数
  7. 机器学习算法中的概率方法
  8. 用一个按钮做主窗口,可以吗?
  9. 吴恩达机器学习(六)神经网络(前向传播)
  10. ODBC数据源的配置方法
  11. AllenNLP框架学习笔记(数据篇之二)
  12. 5G NR 随机接入过程(2)
  13. 深入理解示波器探头各种作用及工作原理
  14. 突然有一天,我老无所依
  15. python替换文本
  16. c语言编程交互式计算器,C语言程序设计交互式函数计算器设计报告.docx
  17. 孕妇吃米饭好吗?盘点适合孕妇吃的美食
  18. DeviceIoControl接口
  19. 连续六个季度实现盈利改善,达达集团内外双重确定性凸显
  20. Netty使用篇:自定义编解码器

热门文章

  1. 微信小程序iOS系统上echarts不能滑动的问题
  2. Unity TileMap工具教程
  3. 计算机科学 vs 计算机技术
  4. Elasticsearch与最新的log4j2零日漏洞
  5. MSDC 4.3 接口规范(10)
  6. 微信JSAPI支付调不起收银台问题
  7. 【运维面试】面试官:你觉得网站访问慢的原因有哪些?
  8. mysql如何更新两条数据_mysql根据查询结果批量更新多条数据(插入或更新)
  9. 计算机桌面下面那一栏如何调节,电脑底部的任务栏不见了,你可以尝试这样做,轻松恢复它...
  10. C++语法(二十)常函数、常对象