在使用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权威指南》
本文发布于:2024-02-04 14:33:41,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170709441656403.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |