- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 git 文档(和许多 SO 线程)中,推荐使用这种重置方法:
$ git reset --soft HEAD^ ;# go back to WIP state <2>
$ git reset <3>
.2. This removes the WIP commit from the commit history, and sets your working tree to the state just before you made that snapshot.
.3. At this point the index file still has all the WIP changes you committed as snapshot WIP. This updates the index to show your WIP files as uncommitted.
https://www.kernel.org/pub/software/scm/git/docs/git-reset.html
显然这很好,但似乎这两个命令可以替换为
$ git reset HEAD^
(相当于)
$ git reset --mixed HEAD^
这应该将 HEAD 指针和索引重置为之前的提交。这个命令的结果与前两个命令的结果实际上有区别吗?如果不是,是否有理由更喜欢两阶段过程?或者只是在文档中以这种方式明确说明 --soft 的行为?
最佳答案
不对,好像没什么区别。
更多的是为了说明 git reset --soft
(即只移动 HEAD,可以 have other more practical uses )
git reset HEAD
用于“取消暂存”,一个简单的 git reset HEAD^
可以同时完成这两种操作(移动 HEAD,取消暂存,不需要 - -mixed
,因为它是默认选项)
这是一个快速测试,看看它是什么样的:
之前(您只需切换回功能,提交“wip
”——正在进行的工作):
C:\Users\VonC\prog\git\test\r\r3>gl
* 6ac95bd - (origin/master, origin/HEAD, master) fix in master (2 minutes ago) <VonC>
| * fd8d97d - (HEAD, origin/feature, feature) snap WIP (3 minutes ago) <VonC>
| * 16066dd - f1 (3 minutes ago) <VonC>
|/
* e8ad96f - f1 (3 minutes ago) <VonC>
重置本身:
C:\Users\VonC\prog\git\test\r\r3>git reset "HEAD^"
Unstaged changes after reset:
M f
这给了你状态:
C:\Users\VonC\prog\git\test\r\r3>git st
# On branch feature
# Your branch is behind 'origin/feature' by 1 commit, and can be fast-forwarded.
# (use "git pull" to update your local branch)
#
# 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: f
#
no changes added to commit (use "git add" and/or "git commit -a")
在 git reset HEAD^
之后记录
C:\Users\VonC\prog\git\test\r\r3>gl
* 6ac95bd - (origin/master, origin/HEAD, master) fix in master (6 minutes ago) <VonC>
| * fd8d97d - (origin/feature) snap WIP (7 minutes ago) <VonC>
| * 16066dd - (HEAD, feature) f1 (7 minutes ago) <VonC>
|/
* e8ad96f - f1 (8 minutes ago) <VonC>
分两步,您会在 git reset --soft HEAD^
之后看到以下日志:
C:\Users\VonC\prog\git\test\r\r2>gl
* 6ac95bd - (origin/master, origin/HEAD, master) fix in master (65 seconds ago) <VonC>
| * fd8d97d - (origin/feature) snap WIP (89 seconds ago) <VonC>
| * 16066dd - (HEAD, feature) f1 (2 minutes ago) <VonC>
|/
* e8ad96f - f1 (2 minutes ago) <VonC>
您的索引仍会反射(reflect)为 wip
准备的内容:
C:\Users\VonC\prog\git\test\r\r2>git st
# On branch feature
# Your branch is behind 'origin/feature' by 1 commit, and can be fast-forwarded.
# (use "git pull" to update your local branch)
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: f
#
然后重置将取消暂存,将您带回到与 git reset HEAD^
一步中相同的阶段:
C:\Users\VonC\prog\git\test\r\r2>git reset
Unstaged changes after reset:
M f
C:\Users\VonC\prog\git\test\r\r2>git st
# On branch feature
# Your branch is behind 'origin/feature' by 1 commit, and can be fast-forwarded.
# (use "git pull" to update your local branch)
#
# 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: f
#
no changes added to commit (use "git add" and/or "git commit -a")
关于git - 为什么在 git reset (--mixed) 之前显式调用 git reset --soft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761896/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
最近我看到这篇文章,它对 Jenkins 进行 GC 调优,其中讨论了这个参数:-XX:SoftRefLRUPolicyMSPerMB https://jenkins.io/blog/2016/11/
我在跑 means2来自 scipy,虽然我收到一条错误消息: /usr/lib/python2.7/dist-packages/scipy/cluster/vq.py:600: UserWarnin
环境为ubuntu 16.04 64bit,go版本go1.12 linux/amd64 我正在尝试将我的 golang 项目从 gopath 切换到 gomodule。我项目导入的包之一是使用cgo
urplus(多余) wave(浪) Get lost (迷路) nature(本性) Rely on 依赖 Soft cancer (软癌) Devour.(吞噬) ink into
我正在尝试安装 openal-soft在 Ubuntu Focal 上,但没有运气。 这是我要安装的软件包: https://packages.ubuntu.com/source/focal/open
ln -s /dir1/file1 /dir2/file1 我想在目标 dir1 中创建一个与 dir2 中的源文件名相同的软链接(soft link) 如何在目标路径中不输入 file1 名称的
我目前正在研究调试器。我读到调试器有软件断点(apparently 这些是最常用的断点)。这些通过将操作码的第一个字节替换为 Int 3(操作码 0xcc)来工作。 我已经读过程序的文本(/code)
根据 keyword module 的文档,Python 3.9 中添加了两个新成员: issoftkeyword softkwlist 然而,他们的文档并未透露任何有关其目的的信息。在What's
我正在使用 OpenAL-Soft对于一个项目,现在我正在尝试决定是否需要实现 OpenAL 源池。 源池有些麻烦(我需要编写代码来“分配”源,以及以某种方式决定何时可以“释放”它们),但如果 Ope
当我说“软”事务时,我的意思是不涉及某些数据库中的持久性,而只是逻辑对象修改。故事是这样的。 普通的 JAVA 应用程序,没有框架,可能有很多线程。 对象Ob在其单独的线程中启动doSomething
我有几百个由不同工具生成的数据库,并存档在一个中心区域。所有文件都以压缩格式存储。我尝试通过在 var 目录中创建软链接(soft link)将这些数据库导入 mysql 服务器,但我在 mysql
在 Linux 中,我如何找到链接到特定目标目录或文件的所有软链接(soft link)? 最佳答案 您可以使用find 的-lname 参数: find . -lname linktarget 关于
创建了名为D1的目录,并在同一目录中创建了文件f1 创建了一个名为 D2 的空目录,为 d1(目录)中的 f1(文件)创建了软链接(soft link)并将其存储在 d2(目录)中。 我使用的命令:l
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我可以将软链接(soft link)存储在apache文档根目录(/var/www/html)下并将实际文件保留在文档根目录之外的另一个文件系统中吗?我的硬盘中有 4 个文件系统:3 个 NTFS 和
Linux 命令:我正在使用以下命令,该命令返回目录中的最新文件名。 ls -Art | tail -n 1 当我运行此命令时,它会返回最新更改的文件,这实际上是软链接(soft link),我想忽略
红帽 5.5gcc 版本 4.1.2 我有一个名为 lib 的目录,在该目录中我有我们在使用客户 API 时从客户那里获得的所有共享库(大约 30 个)。我们与此 API 链接。 目录结构: /usr
我有一个 WPF 应用程序使用 INotifyPropertyChanged 来指示属性更新。我喜欢它的一点是,它使您能够在不调用所有 setter 代码的情况下发出属性更改信号。当您有两个相互更新的
我在系统的三个不同路径中有相同的共享库。假设路径是 PATH1、PATH2 和 PATH3。 共享库名称是 libmylib.so 现在,如果我在 PATH1 中用损坏的软链接(soft link)替
我是一名优秀的程序员,十分优秀!