【Git学习笔记】初始化Git仓库和版本回退
学习地址 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
1. 初始化Git仓库
创建空目录
$ mkdir learngit
$ cd learngit
$ pwd
/d/mycode/learngit
把目录变成Git可以管理的仓库
$ git init
Initialized empty Git repository in d:/mycode/learngit/.git/
2. 添加文件到Git仓库
在 learngit 创建 readme.txt文件,内容是
Git is a version control system.
Git is free software.
然后
$ git add readme.txt
$ git commit -m "wrote a readme file"
[master (root-commit) 01f8c13] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
3. 查看工作区状态和文件修改内容
修改的 readme.txt内容为:
Git is a distributed version control system.
Git is free software.
git status 命令可以让我们时刻掌握仓库当前的状态
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory) modified: readme.txt no changes added to commit (use "git add" and/or "git commit -a")
git diff 命令查看文件具体修改内容
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index d8036c1..013b5bc 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
\ No newline at end of file
版本回退
将上面的修改上传到git仓库中,经过n次的修改和上传后,git仓库已经有好多的版本了。
git log 命令用来查看上传日志
$ git log
commit ce0986a8d1603fdeeb68e66b54ab7f696e4a602f
Author: liuchuanwei <1254428526@qq.com>
Date: Wed Dec 14 14:50:17 2016 +0800 modify readme.txt commit 01f8c13a493c3fe08c7bdfceb22a19a0b5f20189
Author: liuchuanwei <1254428526@qq.com>
Date: Wed Dec 14 14:31:19 2016 +0800 wrote a readme file
如果嫌输出的信息太多太杂乱,可以是添加参数 --pretty=oneline
$ git log --pretty=oneline
ce0986a8d1603fdeeb68e66b54ab7f696e4a602f modify readme.txt
01f8c13a493c3fe08c7bdfceb22a19a0b5f20189 wrote a readme file
git reset --hard HEAD^ 回退到上一个版本,如果回退到上上个版本,则 HEAD^^ ,当然往上100个版本写100个^比较不容易数过来,所以写成HEAD~100。
$ git reset --hard HEAD^
HEAD is now at 01f8c13 wrote a readme file
这时再用 git log 命令来查看版本,发现版本 modify readme.txt 不见了,就好像你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?
$ git log
commit 01f8c13a493c3fe08c7bdfceb22a19a0b5f20189
Author: liuchuanwei <1254428526@qq.com>
Date: Wed Dec 14 14:31:19 2016 +0800 wrote a readme file
办法还是有的,只要找到版本 modify readme.txt 的commit_id ,即 ce0986a... ,它是用SHA1计算出的数字,用十六进制表示
git reset --hard comit_id 回到指定 commit_id 的版本,commit_id 不用写全,只要git能确定版本就行
$ git reset --hard ce0986
HEAD is now at ce0986a modify readme.txt
要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。
$ git reflog
ce0986a HEAD@{0}: reset: moving to ce0986
01f8c13 HEAD@{1}: reset: moving to HEAD^
ce0986a HEAD@{2}: reset: moving to ce0986
01f8c13 HEAD@{3}: reset: moving to HEAD~1
ce0986a HEAD@{4}: reset: moving to ce0986
01f8c13 HEAD@{5}: reset: moving to HEAD^
ce0986a HEAD@{6}: commit: modify readme.txt
01f8c13 HEAD@{7}: commit (initial): wrote a readme file
【Git学习笔记】初始化Git仓库和版本回退的更多相关文章
- Git学习笔记day01 从GitHub克隆版本库
本期Git教程将会带您进入Git的世界,这是您使用分布版本控制工具Git的开端,祝您学习顺利! 步骤一 在Linux系统中下载Git 如果是Ubuntu系统,在shell中输入指令 sudo apt ...
- Git学习笔记(2)-创建仓库
一.Git简介 1.Git是什么 Git是分布式版本控制系统 2.Git有什么特点 (1)Git是分布式的SCM,SVN是集中式的 (2)Git每个历史版本存储完整的文件,SVN存储文件差异 (3)G ...
- 【Git学习笔记】远程仓库
第一种情景:本地初始化一个Git仓库后,接着又在github上创建了一个Git仓库,现在要让这两个仓库进行远程同步. 1. 关联本地仓库就和远程仓库 $ git remote add origin ...
- Git学习笔记——一个NB的分布式版本控制系统
1. 命令: git init 创建新仓库 (在一个空文件下然后执行命令) git clone + 路径 检出仓库,从本地或从服务器上 git status 查 ...
- git学习笔记04-将本地仓库添加到GitHub远程仓库-git比svn先进的地方
第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shel ...
- git学习笔记(二)—— 创建版本库&&版本管理
一.创建版本库 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录: mkdir gitHub_CXWcd gitHub_CXW git init Initialized empty G ...
- Git学习笔记四--远程仓库
Git远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上. 怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本 ...
- git 学习笔记 —— 切换和恢复提交版本( git reset/reflog/tag 命令)
记录一下关于 git 不同提交版本间切换的操作以及如何恢复至切换之前的版本. 切换到之前提交的版本 —— git reset --hard 笔者在使用 git 时,首先接触到了一个"黑魔法& ...
- Git学习笔记3-远程仓库
1.添加远程仓库 $ git remote add [shortname] [url] $ git remote add origin https://github.com/Mike199201/Gi ...
- Git 学习笔记--1.Git基础操作
取得项目的Git仓库 有两种方式取得Git项目仓库.第一种是在现存的目录下,通过导入所有文件来创建新的Git仓库.第二种是从已有的Git仓库克隆出一个新的镜像仓库. 在工作目录中初始化新仓库 要对现 ...
随机推荐
- POJ 1780 Code(有向图的欧拉通路)
输入n(1<=n<=6),输出长度为10^n + n -1 的字符串答案. 其中,字符串以每n个为一组,使得所有组都互不相同,且输出的字符串要求字典序最小. 显然a[01...(n-1)] ...
- java面试题及答案(转载)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- hdu 1502 Regular Words
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1502 思路:给定一个n,分别由n个a,b,c组成的字符串的所有前缀中a的个数大于等于b的个数大于等于c的个 ...
- 错误:ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 的解决办法--转载但验证过后可以用
今天,用iSQL*Plus 以sys用户连接数据库的时候报ORA-28009:connection as sys should be as sysdba or sysoper的错误,不知道是怎么回事, ...
- tp框架之增删改查
控制器 <?php namespace Home\Controller; use Think\Controller; class CeShiController extends Controll ...
- C# 执行文件的根目录 (转)
1.取得控制台应用程序的根目录方法 方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDomain.Bas ...
- 高并发应用场景下的负载均衡与故障转移实践,AgileEAS.NET SOA 负载均衡介绍与实践
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- 转换一个矩阵(2维数组)为HTML Table
matrix[row][col],比如[ [ "Name", "Age" ], [ "Sam", 12 ] ] function (m) { ...
- hdu 5071(2014鞍山现场赛B题,大模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 思路:模拟题,没啥可说的,移动的时候需要注意top的变化. #include <iostr ...
- RocketMQ与kafka对比(18项差异)-转自阿里中间件
淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011年初,Linkin开源了Kaf ...