git reset <filename>如何工作?

时间:2017-12-07 13:12:07

标签: git add reset staging

有两个关于git reset的陈述是正确的,但鉴于我对Git如何运作的了解有限,我发现它们是矛盾的。

有没有办法调和这两个陈述?

声明1: Git reset file1将从暂存区域中取消添加 file1

这是将 file1 添加到暂存时使用的命令,您改变主意并希望将其从暂存区域中删除。

声明2: Git reset file1会将文件从HEAD复制到暂存区域。

根据声明2,git reset 文件添加到暂存区域。

那么当文件从HEAD复制到临时区域时,如何从暂存区域中删除文件?

2 个答案:

答案 0 :(得分:2)

HEAD指的是当前分支的头部,即最新的提交。更改文件时,工作副本中的文件与HEAD不同。暂存这种差异意味着将文件从工作副本复制到暂存区域。

取消暂停意味着从暂存区域移除HEAD的差异。因此,通过将状态从HEAD复制回暂存区域来完成取消暂停。

答案 1 :(得分:0)

git如何重置?

让我们举一个例子: -

我们将 octodog.txt 添加到我们的家庭 octofamily

git add octofamily/octodog.txtcode

所以,现在 octodog 是该系列的一部分, octocat (我们之前的文件)都被压抑了。

由于我们喜欢 octocat 而不是 octodog ,我们会通过删除octodog.txt

来扭转他的皱眉

您可以使用git reset命令取消暂存文件。继续,删除octofamily / octodog.txt。

git reset octofamily/octodog.txt

git reset在取消暂停 octodog.txt 方面做得很好,但你会注意到他还在那里。他不再上演了。如果我们能够回到octodog出现之前的事情并且破坏了聚会,那将是很棒的。

使用以下命令可以将文件更改回上次提交时的状态:

git checkout -- <target>

继续并删除自上次提交 octocat.txt

以来的所有更改
git checkout -- octocat.txt

进一步参考和git知识here is one git game

希望它能清除你所有与git相关的疑问:)