git命令评测
近日得知git命令在库进行操作,查找git尽管小命令(当然,也不能太小),但他们是一个非常强大的组合,更重要的是,它是非常的效果不同状态的命令是不一样的打。该博文总结git命令。。
Git命令
命令小结
| 命令 | 功能 |
|---|---|
| git init | 把当前目录初始化为默认的git库 |
| git add 文件名称 | 向git库中加入一个文件 |
| git rm 文件名称 | 从git库中删除一个文件 |
| git status | 查看当前库中进行的任务 |
| git diff 文件名称 | add前查看工作区和暂存区的区别 |
| git commit -m “改动内容” | 把改动内容提交上去,用于区别版本号 |
| git checkout – 文件名称 | 在add之前把文件恢复到上次交付,在commit之前恢复到暂存区的状态 |
| git log [–pretty=oneline] | 显示这个库里都干过啥 |
| git relog | 查看命令历史,以便确定要回到未来的哪个版本号 |
| git reset HEAD 文件名称 | 能够把暂存区的改动撤销掉 |
| git reset –hard HEAD^ | 回退到上一个版本号 |
| git reset –hard 版本号号 | 回退到某个版本号 |
注意假设一个库里的非常多文件是合用一个版本号号的,也就是说变更版本号号后,相应的全部的文件都会回退;
基本命令
git 建立库,我们是在工作区中改动文件的,工作区能够有非常多文件;
git add 能够把工作区(working tree)下改动的文件或加入的文件加入到临时存储的区域(index file)。
git commit 做的事情是把index file中改动提交到分支里。默认的分区是master;
git diff
diff 就是difference的意思,查看不同,依据工作区(working tree)、缓存区(index file)和版本号区(master)的不同,药效不一样哦 -_-!
1. git diff 文件名称:是查看working tree与index file 的区别的。也就是说改动之后add之前能够用这个看改了什么;
2. git diff – cached:是查看index file与master的区别的。
add之后,假设你忘记全部文件做的改动是什么。用这个;
3. git diff HEAD 文件名称:是查看working tree和master的区别的。add之后。能够用这个看具体每一个文件改了什么;
举个栗子
在工作区新建一个文件hello.cpp
#include<iostream>
using namespace std;
int main()
{
cout<<"快使用"<<endl;
return 0;
}
然后加入到版本号库里面
$ git add hello.cpp
$ git commit -m "新建hello.cpp"
[master 86a0afb] 新建hello.cpp
1 file changed, 7 insertions(+)
create mode 100644 hello.cpp
$ git status
位于分支 master
无文件要提交。干净的工作区
然后改动hello.cpp文件
#include<iostream>
using namespace std;
int main()
{
cout<<"快使用双截棍"<<endl;
return 0;
}
加入到暂存区里
$ git add hello.cpp
$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)
改动: hello.cpp
再改动hello.cpp文件
#include<iostream>
using namespace std;
int main()
{
cout<<"快使用双截棍,嗯哪咋地"<<endl;
return 0;
}
这时候工作区、暂存区、版本号区的文件都不一样啦
$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)
改动: hello.cpp
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
改动: hello.cpp
使用git diff命令来一一查看哈
$ git diff hello.cpp
diff --git a/hello.cpp b/hello.cpp
index 4cbc284..32531fa 100644
--- a/hello.cpp
+++ b/hello.cpp
@@ -2,6 +2,6 @@
using namespace std;
int main()
{
- cout<<"快使用双截棍"<<endl;
+ cout<<"快使用双截棍,嗯哪咋地"<<endl;
return 0;
}
上面第10行是暂存区中的内容,而第11行是工作区中的内容。说明git diff 文件名称 比較的是暂存区与工作区的内容。
事实上这里假设用git diff – 文件名称也能达到同样的效果,关于 – 的使用方法会在后面相信讨论。
$ git diff --cached
diff --git a/hello.cpp b/hello.cpp
index 4cadd9e..4cbc284 100644
--- a/hello.cpp
+++ b/hello.cpp
@@ -2,6 +2,6 @@
using namespace std;
int main()
{
- cout<<"快使用"<<endl;
+ cout<<"快使用双截棍"<<endl;
return 0;
}
第10行是版本号库的内容,第11行是暂存区中的内容,说明git diff –cached比較的是版本号库与暂存区的内容
$ git diff HEAD hello.cpp
diff --git a/hello.cpp b/hello.cpp
index 4cadd9e..32531fa 100644
--- a/hello.cpp
+++ b/hello.cpp
@@ -2,6 +2,6 @@
using namespace std;
int main()
{
- cout<<"快使用"<<endl;
+ cout<<"快使用双截棍,嗯哪咋地"<<endl;
return 0;
}
比較的是版本号库与工作区的内容;
git checkout – 文件名称
case 1. git checkout – 文件名称,在改动文件后add到暂存区之前用版本号区的文件替换工作区的,
case 2. 在add到缓存区后,commit到版本号区之前,再一次改动文件。就用暂存区中的文件覆盖工作区。
$ git checkout -- hello.cpp
$ cat hello.cpp
#include<iostream>
using namespace std;
int main()
{
cout<<"快使用双截棍"<<endl;
return 0;
}
dragon@dragon-virtual-machine:~/code/learngit$
case 3.在add到缓存区后,commit到版本号区之前。再一次改动文件。假设想用版本号区的文件覆盖能够有两种做法:
方法一:
$ git checkout HEAD hello.cpp
$ cat hello.cpp
#include<iostream>
using namespace std;
int main()
{
cout<<"快使用"<<endl;
return 0;
}
$ git status
位于分支 master
无文件要提交,干净的工作区
HEAD是当前版本号库的意思,这样的做法顺便将暂存区清空了
方法二:
$ git reset HEAD
重置后撤出暂存区的变更:
M hello.cpp
$ git checkout -- hello.cpp
$ cat hello.cpp
#include<iostream>
using namespace std;
int main()
{
cout<<"快使用"<<endl;
return 0;
}
先清空暂存区,然后再使用git checkout – 文件名称,用版本号去来替换工作区,相当于case 1.。
git的删除与恢复操作
在工作区,我们能够直接rm命令手动删除一个文件。可是这样在版本号库里面并没有变化。所以我们假设想在版本号库里面删除这个文件。能够不用手动删除,直接用git rm 文件名称
然后git commit -m ” 删除。。。
”来提交到版本号库;可是假设出现勿删还是能够恢复的
case 1.手动删除没有提交到暂存区。使用git checkout – 文件名称,用版本号区文件覆盖工作区
case 2.使用git rm删除.还没有提交
$ ls
hehe hello.cpp readme.txt
$ git rm hello.cpp
rm 'hello.cpp'
$ ls
hehe readme.txt
t$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)
删除: hello.cpp
$ git checkout HEAD hello.cpp
$ ls
hehe hello.cpp readme.txt
$ git status
位于分支 master
无文件要提交,干净的工作区
当然也能够使用git checkout 的另外一种方法
case 3. 提交删除。能够使用版本号回退的方法来恢复文件,键上面git命令表格里的git reset
版权声明:本文博主原创文章,欢迎转载和分享。但请声明来源http://blog.csdn.net/zhzz2012
git命令评测的更多相关文章
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- 工作中常用的git命令
一 常用Git命令 git clone:(区分SSH or HTTP) git init:初始化仓库 二 Git命令详解 Git Bash下,cd /c git clone,从远程Git版本库克隆一份 ...
- 常用 Git 命令清单
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 常look的Git命令
常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git a ...
- ***Linux下使用git命令及github项目
在linux下搭建git环境1.创建Github账号,https://github.com2.Linux创建SSH密钥: ssh-keygen ##一直默认就可以了 3.将公钥加入到Github账户 ...
- 我所记录的git命令(非常实用)
一.前言 记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流... [ 顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高? 相同的标题 ...
- GIT命令行的使用
新手了解 有不对的地方指点下 首先, 了解下什么是GIT,GIT是一款开元的分布式版本控制工具, 在世界上的所有分布式版本控制工具中,GIT是最简单,最流行,同时也是最常用的 相比于其他版本的控制工具 ...
- 简明 Git 命令速查表(中文版)
原文引用地址:https://github.com/flyhigher139/Git-Cheat-Sheet/blob/master/Git%20Cheat%20Sheet-Zh.md在Github上 ...
- 常用 Git 命令清单 转
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
随机推荐
- UML学习总结(3)——StarUML指导手册
StarUML使用说明-指导手册 原著:Stephen Wong 翻译:火猴 StarUML是一种生成类图和其他类型的统一建模语言(UML)图表的工具.这是一个用Java语言描述 ...
- ehcache、memcache、redis三大缓存比较(转)
最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考! Ehcache 在Java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS ...
- ZJOI2002昂贵的聘礼题解
http://codevs.cn/problem/1324/ 题目大意 一个部落,你能够和社会地位等级的极差不大于M的全部人交易.你能够拿金币直接从一个人手里买东西,也能够从别人那里买到那个人想要的东 ...
- 为什么通过空指针(NULL)能够正确调用类的部分成员函数
#include <iostream> using namespace std; class B { public: void foo() { cout << "B ...
- 让自己的软件实现拖拽打开文件(覆盖WM_DROPFILES,使用DragQueryFile,DragFinish API函数)
作者: 帅宏军 //声明 protected procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES; --------- ...
- WCF学习笔记——WCF基础
一 WCF与SOA SOA是一种通过为所有软件提供服务外观,并将这些服务的WSDL集中发布到一个地方的一种组织企业软件的方法.它通过使用明确定义的接口通过跨越边界传递消息来让多个自治的服务协同工作.S ...
- 组件绑定v-model,实现最大化复用
看优秀的vue项目,对组件的封装做的都非常到位,比如一个按钮都可以实现复用,仔细研究会发现实现基础就是组件直接绑定v-model,来看看按钮: 比如有个点赞按钮,长这样: 当点赞之后变成这样: 相信很 ...
- 百度ueditor vue项目应用 -- 图片上传源码修改
本文目的有两个,一.废掉单图上传,二.改造多图上传 大家都知道百度ueditor不是针对vue项目开发的,官方文档提供的源码包里有需要后端配置的接口,but到vue项目就不太好办了,网上有些文章也介绍 ...
- LibCurl HTTP部分详细介绍
目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.lib ...
- 数学之路-python计算实战(5)-初识numpy以及pypy下执行numpy
N .有用的线性代数.傅里叶变换和随机数生成函数.numpy和稀疏矩阵运算包scipy配合使用更加方便.NumPy(Numeric Python)提供了很多高级的数值编程工具,如:矩阵数据类型.矢量处 ...