有两个关于git reset
的陈述是正确的,但鉴于我对Git如何运作的了解有限,我发现它们是矛盾的。
有没有办法调和这两个陈述?
声明1:
Git reset file1
将从暂存区域中取消添加 file1 。
这是将 file1 添加到暂存时使用的命令,您改变主意并希望将其从暂存区域中删除。
声明2:
Git reset file1
会将文件从HEAD复制到暂存区域。
根据声明2,git reset
将文件添加到暂存区域。
那么当文件从HEAD复制到临时区域时,如何从暂存区域中删除文件?
答案 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相关的疑问:)