2016-07-31 34 views
0

文件说:git reset文档 - 它如何与git add相反?

git reset [-q] [<tree-ish>] [--] <paths>... 

这种形式在<tree-ish>重置所有<paths>自己的状态索引条目。 (它不影响工作树或当前分支。)

这意味着git reset <paths>git add <paths>相反。

我有点觉得“......这意味着git reset是git add的反面......”是错误的。

如果git add从工作目录复制到索引,人们可能会认为,从索引到工作目录复制相反。

但是这种形式的git reset从树木复制到索引和git checkout-index实际上会做相反的事情。

这与git add相反吗?如果它不相反,是否值得尝试更新文档?

+3

'git add'在暂存区域中添加更改。 'git reset'从暂存区域中删除更改。这就是为什么它们是相反的:它们相互撤销(至少在简单的用法中,当树指定或' - soft/- hard'被指定时,这会改变)。 –

+0

我明白你在说什么,并且已经熟悉git,我倾向于说你很迂腐。但这听起来像是一位新人的有用见解,因此可能会在博客文章中提到一个好点。 –

+0

另外,是否有可能在索引中还没有在工作目录中的东西?我现在正在使用手机,所以无法测试,但似乎从索引复制到工作目录可能是不可能的。 –

回答

2

描述GIT中复位的这种特殊的方式是在commit 7b8cd49引入由Thomas Rast (trast) GIT中v1.7.3.2(2010年7月)

此时,所述discussion proposed the initial form

这意味着git reset <paths>是的git add +<paths>相反,只要该<paths>已经跟踪

JUNIO C.滨野评价:

以上是“有路径”模式比我们目前有的更清晰的描述。不过,我怀疑我们需要“,但前提是......”。

git reset HEAD frotz”从头提交没有frotz从索引中删除frotz,不是?

我在“git reset vs git reset HEAD”中提到过git reset <tree-ish> <file>如何取消(取消添加)文件。

当您只考虑索引(而不是工作目录)时,git reset <tree-ish> <file>确实与git add相反。