Chinaunix首页 | 论坛 | 博客 登录 | 注册
  • 博客访问: 1879727
  • 博文数量: 317
  • 博客积分: 1557
  • 博客等级: 上尉
  • 技术积分: 1208
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-26 23:38
个人简介

如果想出发,就不要等到明天!

文章分类

全部博文(317)

文章存档

2016年(1)

2015年(41)

2014年(152)

2013年(114)

2012年(4)

2011年(1)

2009年(4)

分类: 项目管理

2013-01-27 20:49:53

1,初始状态

 


1
2
3
4
5
6
7
8
9
touch newFile.txt
echo "tag 1 init" > new-commit.txt
echo "tag 1 hello" >> new-commit.txt
echo "tag 1 fini" >> new-commit.txt
git add new-commit.txt
git commit -m "for reset test tag 1 init and fini"
git log --oneline
git log --graph --oneline
git status -s


 


2,初始化修改状态 


1
2
3
4
echo "tag 2 init" >> new-commit.txt
git add new-commit.txt 
echo "tag 2 hello" >> new-commit.txt
git status -s


 


3,查看git状态 


1
2
3
git diff
git diff HEAD
git diff --cached


 


4,查看引用指针 HEAD 与 master 的引用变更log


1
2
3
git reflog show
git reflog show HEAD
git reflog show master



5,git软重置 


1
2
3
git reflog show master
git reflog show master | head -2
git reflog show master | tail -2

1
git status


1
2
3
4
git reset --mixed master@{1}
git diff
git diff HEAD
git diff --cached


6,git混合重置(default重置)


1
2
3
4
5
6
7
8
git status -s
git reflog show master
git reset --mixed master@{2}
git diff
git diff HEAD
git diff --cached
git status -s
git reflog show master


 

7,git硬重置 

1
2
3
4
5
6
7
8
git status -s
git reflog show master
git reset --hard master@{2}
cat new-commit.txt
git status -s
git diff
git diff HEAD
git diff --cached


1
2
3
4
5
6
cat new-commit.txt
git add new-commit.txt
git status -s
echo "tag 2 fini" >> new-commit.txt
git status -s
git diff


1
2
git diff HEAD
git diff --cached


1
2
3
4
5
6
7
8
9
10
cat new-commit.txt
git status -s
git reflog show master
git reset --hard master@{2}
git reflog show master
git status -s
git diff
git diff HEAD
git diff --cached
ls



总结:

1,soft重置,只改变引用指针的指向,缓冲区、工作区均不改变。

2,mixed重置,改变引用指针的指向,并且用重置后的指针指向覆盖缓冲区,但不改变工作区。

3,hard重置,改变引用指针的指向,并且用重置后的引用指向覆盖缓冲区与工作区,工作区、缓冲区所有已经被跟踪的文件都会被覆盖,没有被跟中的文件则不受影响。


阅读(1930) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~