Git基础02

三种状态

仅修改但没有添加到暂存区

123456789
$ git status位于分支 master尚未暂存以备提交的变更:  (使用 "git add <file>..." 更新要提交的内容)  (使用 "git checkout -- <file>..." 丢弃工作区的改动)

修改:     01.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

已提交到暂存区,但没有提交

123456
$ git status位于分支 master要提交的变更:  (使用 "git reset HEAD <file>..." 撤出暂存区)

修改:     01.txt

已提交到当前分支,工作区干净

123
$ git status位于分支 master无文件要提交,干净的工作区

提交历史

1234567
$ git log # 显示所以提交历史commit 9cf50d94d4134f36199c19a4798fe84c81832515Author: learnit <higoge@gmail.com>Date:   Wed Dec 24 13:49:39 2014 +0800

03........

commit后面的一串数字,是提交的编号(SHA1编码),也叫版本号。

12345678910111213141516
$ git log -p 01.txt # 显示某个文件的历次修改commit 9cf50d94d4134f36199c19a4798fe84c81832515Author: learnit <higoge@gmail.com>Date:   Wed Dec 24 13:49:39 2014 +0800

03

diff --git a/01.txt b/01.txtindex 181417e..7e556fd 100644--- a/01.txt+++ b/01.txt@@ -1,2 +1,3 @@ line01 02+03......
1234
$ git log --pretty=oneline # 在一行上显示log9cf50d94d4134f36199c19a4798fe84c81832515 032e18697d9cf53454820091a5db86790102ddf8db 0249805b0b3b55fe32219cd14d5a15583893836520 添加01.txt文档
12345
$ git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ad) \%C(bold blue)[%an]%Creset' --abbrev-commit --topo-order --date=short # 变态的显示,不过更加清晰* 9cf50d9 - (HEAD, master) 03 (2014-12-24) [learnit]* 2e18697 - 02 (2014-12-24) [learnit]* 49805b0 - 添加01.txt文档 (2014-12-24) [learnit]

比较

12345678910
$ git diff # 暂存区与工作区的比较diff --git a/01.txt b/01.txtindex fc52d75..b726728 100644--- a/01.txt+++ b/01.txt@@ -3,3 +3,4 @@ line01 03 04 05+06
1234567891011
$ git diff HEAD # 工作区+暂存区与当前版本的比较diff --git a/01.txt b/01.txtindex 3b6f86c..b726728 100644--- a/01.txt+++ b/01.txt@@ -2,3 +2,5 @@ line01 02 03 04+05+06
123456789101112
$ git diff 2e18 # 不需要把编号全部写出diff --git a/01.txt b/01.txtindex 181417e..b726728 100644--- a/01.txt+++ b/01.txt@@ -1,2 +1,6 @@ line01 02+03+04+05+06

HEAD表示当前版本。
HEAD~表示当前版本的前一个版本,或HEAD^
HEAD~~表示将当前版本的前两个版本, 或HEAD^^
HEAD~100表示当前版本的前100个版本。

撤销(后悔药)

1
$ git checkout -- 01.txt  # 放弃工作区的修改 !!!慎用!!!
123
$ git reset HEAD 01.txt # 移出暂存区的修改,放回工作区重置后撤出暂存区的变更:M       01.txt
123
$ git reset HEAD~  # 恢复到某个版本,所有的修改(包括暂存区中的修改)放回工作区重置后撤出暂存区的变更:M       01.txt
12
$ git reset --hard HEAD~ # 恢复到某个版本,放弃所有的修改HEAD 现在位于 dfcfea8 05

--hard参数表示放弃所有的更改,还原后工作区干净。
不加--hard参数,即--soft,表示将到达版本之后的所有修改,包括暂存区的修改全部放置到工作区。
通过git status命令就可以看出--hard参数的作用。

12345678910
$ git reflog # 记录了每次执行的命令dfcfea8 HEAD@{13}: reset: moving to HEAD~b28a718 HEAD@{14}: commit: 06dfcfea8 HEAD@{15}: reset: moving to HEAD~7cf36f0 HEAD@{16}: commit: 02.txtdfcfea8 HEAD@{17}: commit: 05dacd44e HEAD@{18}: commit: 049cf50d9 HEAD@{19}: commit: 032e18697 HEAD@{20}: commit: 0249805b0 HEAD@{21}: commit (initial): 添加01.txt文档

当后悔撤销时,尤其是加了参数--hard时,可以通过此命令找回丢失的信息。

~~ EOF ~~

时间: 2024-09-17 04:13:52

Git基础02的相关文章

Git详解之二:Git基础

原文地址:http://blog.jobbole.com/25808/ 原文:<Pro Git> Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某些更 新.我们还会展示如何让 Git 忽略某些文件,或是名称符合特定模式的文件:如何既快

Git基础01

Git基础教程,只介绍Git的基础命令,因为篇幅问题,将其分为4篇博客. 为什么是Git 一句话:Git简单,上手快,支持本地无网络提交,多人协作方便. 缺点:要精通,需要一定的过程.推荐使用命令行模式,对于没有看惯了GUI的人,不习惯. Git入门教程很多,最简单的教程是<git - 简明指南>,稍微详细点的是廖雪峰的<Git教程>. Git最全的教程是<Pro Git>(有中文版本). 2015.09.17更新:有个歪果仁给我发邮件让我添加他的教程,有兴趣的请自行查

Git基础笔记(便查阅)

起步 三种状态 三种状态 已修改 modified 已暂存 staged 已提交 commited 三种工作区域 本地仓库 woking directory 暂存区域 staging area git工作目录 git directory 配置 权限的作用范围 所有用户 etc/gitconfig git config --system .. 当前用户 ~/.gitconfig git config --global .. 当前文件 .git/config git config .. 用户信息 g

Git基础 3 ---- Git 初始化及仓库创建

 1 Git基础设置    1 设置用户名       git config --global user.name "用户名"           2 设置用户邮箱       git config --global user.name "邮箱"                  3 查看设置       git config --list         2 Git 获取帮助      1 获取命令帮助         git help              

Python基础02 基本数据类型

原文:Python基础02 基本数据类型 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢!   简单的数据类型以及赋值   变量不需要声明 Python的变量不需要声明,你可以直接输入: >>>a = 10 那么你的内存里就有了一个变量a, 它的值是10,它的类型是integer (整数). 在此之前你不需要做什么特别的声明,而数据类型是Python自动决定的. >>>print a >>&

Git基础03

分支 1 $ git branch br01 # 创建br01分支 12 $ git checkout br01 # 切换到br01分支切换到分支 'br01' 12 $ git checkout -b br02 # 创建并切换到br02分支切换到一个新分支 'br02' 所创建的分支,都是基于当前分支创建的,也可以指定分支创建. 12 $ git checkout -b br03 br01 # 基于br01创建br03,并切换到br03切换到一个新分支 'br03' 12345 $ git b

Git基础06:介绍一个成功的 Git 分支模型

本文转自开源中国社区,修复了几处文字错误.文章译者:Lax,xue777hua,FGQ,showme,Tocy,lidashuang,JoeyBlue. 英文原文:A successful Git branching model. 在这篇文章中,我提出一个开发模型.我已经将这个开发模型引入到我所有的项目里(无论在工作还是私人)已经一年有余,并且它被证明是非常成功的.我打算写这些已经很久了,但我一直找不到时间来做,现在终于有时间了.我不会讲任何项目的具体细节,仅是关于分支策略和释放管理相关内容.

git基础:本地代码库的使用和提交

git是一个好东西,但对于新手来说,这个工具并不好使用,因为它里面涉及到很多东西,而这些东西新手 一时间是无法理解的.不幸的是,本人就是新手一枚,所以,这里并不会讲太多有关于git的原理,什么样的 阶段就该做什么样的事情,先从熟悉工具的常用用法开始. 为方便使用git,我们首先在github上创建 一个repository.我们可以在github上根据教程创建一个,这里不讲步骤,上面讲得非常清楚. 我先 在github上创建一个远程库"Pratice".由于我之前在github上已经有

Git基础04

临时存储工作区 123 $ git stash # 把当前工作现场(工作区及暂存区的修改)"储藏"起来,以后可恢复现场后继续工作Saved working directory and index state WIP on master: e353f90 Merge branch 'br03'HEAD 现在位于 e353f90 Merge branch 'br03' 12 $ git stash list # 查看所有的stashstash@{0}: WIP on master: e35