Git穿梭时空
来源:互联网 发布:淘宝宝贝图片尺寸大小 编辑:程序博客网 时间:2024/04/28 10:26
在使用git的时候想把git add
添加到暂存区的文件撤出怎么办!或者想回到某个已经提交的版本怎么办,更甚者想把工作区的修改撤销掉又该怎么办。这些想法就像穿梭时空一样不可思议,但这在Git里都是可以实现的!
先说把git add
添加到暂存区之后,怎么把文件怎么撤出暂存区。可以使用git reset HEAD 文件名
命令把文件从暂存区撤出。下面是git reset
的具体用法。
git reset commit id
命令会重置分支所指向的commit id
,还可以根据参数不同可以对暂存区,工作区进行重置。
git reset --soft commit id
:改变分支指向的commit id
。
git reset --mixed commit id
(如果不带参数默认就是–mixed): 改变分支指向的commit id
然后替换暂存区,暂存区的内容与分支指向的目录树一样
git reset HEAD:
使用HEAD指向的目录树重置暂存区,工作区不会受影响,可以理解为把git add
命令更新到暂存区的内容撤出暂存区。
git reset HEAD 文件名
:相当于把指定的文件的改动撤出暂存区。
git reset --soft HEAD^
: 使分支回退到上一个提交,暂存区和工作区不会被改变。
git reset HEAD^
:工作区不会被改变,暂存区和分支回退到上一个提交的状态。
git reset --hard HEAD^
: 工作区,暂存区,分支都会回退到上一个提交。
git reset --hard
:替换分支的引用指向,替换暂存区,暂存区指向与分支指向一样,替换工作区,工作区内容与暂存区一致。
git reset --soft
:替换分支的引用指向.
git reset --mixed(默认的)
: 替换分支的引用指向,暂存区指向与分支指向一样,
git reset HEAD
:使暂存区指向与分支指向一样,相当于用git add 添加到暂存区的文件撤出来。
tips :所以你想修改上次提交的message可以使用下面这个命令 git commit --amend
: 修改最近提交的消息。
想把工作区的某个文件的修改撤销掉可以使用git checkout 文件名
这个命令。下面是git checkout的具体用法。
git reset
改变的是分支的指向!而git checkout
改变的是HEAD的指向!因此git checkout
命令还可以切换分支。
git checkout 分支名
:切换到指定的分支,工作区,暂存区,HEAD的指向都指向指定分支所指向的目录树。
git checkout 文件名
:用暂存区中的文件覆盖工作区中的文件从而达到撤销对文件的修改。
git checkout branch 文件名
:用branch所指向的目录树里面的文件替换工作区和暂存区中的文件。
git checkout .
:注意有个(.),这个命令会清空你对工作区所以的修改(前提是文件处于modified状态下)。想当于用暂存区的所以文件直接覆盖工作区!
在使用git reset --hard HEAD^
命令回到上一个版本之后又后悔了怎么办。此时使用git log
命令是只能看到当前分支之前的提交。那此时该怎么办! 可以是用git reflog
!
git reflog
命令查看的是.git/logs/
下面的子文件,这个文件包括了分支的操作,commit操作,pull操作,push操作,checkout操作等等都记录(包含commit id)这.git/logs/
文件下面对应的子文件。(git reflog这个命令应该是能看到所以会产生commit id的操作记录吧?
)
tips: git reflog .git/logs/文件名可以看到具体的操作记录,比如 git reflog master 查看master分支上的操作记录。
tips:.git/logs/
下面的子文件文件里面的内容与git reflog
命令看到的内容是相反的,git reflog最近的操作在前面而文件最近的操作在后面
参考
《Pro Git》
《Git权威指南》
如此文章有不对地方请多多指正!
- Git穿梭时空
- git--时空穿梭机--ife任务9
- 关于时空穿梭
- BZOJ3434: [Wc2014]时空穿梭
- 关于穿梭时空
- 时空穿梭和系统重启
- 【bzoj 3434】 WC2014 时空穿梭 - 乱搞数学题
- Git-时光穿梭
- Git 时光机穿梭
- Git-时光穿梭
- 梦记录-时空穿梭~宇宙中根本没有时间概念.
- BZOJ 3434 Wc2014 时空穿梭 莫比乌斯反演
- SVN+Myeclipse 代码的时空穿梭机和分身法术
- [时空穿梭] 读取80后小学经典课文记忆
- Git操作之“时光穿梭”
- Git教程:时光机穿梭
- git 时光机穿梭(三)
- Git教程:时光机穿梭
- Swift--构建环境
- ubuntu u盘启动错位:missing parameter in configuration file
- bzoj 1610: [Usaco2008 Feb]Line连线游戏
- 一致性Hash算法简介
- 基于微信小程序的系统开发准备工作
- Git穿梭时空
- 加载Hadoop+spark镜像文件需要修改的配置文件
- 通过spring statemmachine 自定义构建属于自己的状态机(两种方式)
- CSSの定位问题
- Linux中常用的英文总结
- linux中服务安装使用
- Redis键命令
- 【MyCat】--基本内容
- Hadoop 之 NameNode 元数据原理