假设我在暂存区域(或索引)中放置了很多文件,但现在我想撤消此操作,删除所有文件(如果它们被删除,它们都是错误的,这并不重要)。我在某个地方读到我应该做一个git reset,但是因为我还没有提交这些文件,这不会实际上删除我以前的提交,这实际上是正确的,我现在试图保留哪些代码?在我的理解中,只有当我实际提交了这些更改时才能工作,因此这个提交将被删除,HEAD现在将是前一个提交。我错过了什么?我知道这里有类似的帖子,但答案总是指向git重置,这正是我不明白的地方。
git reset
yvfmudvl1#
git reset将还原暂存区以反映当前提交。(HEAD). git status将报告没有暂存更改。这实际上会撤消您可能执行的所有git add和git rm --cached命令。git reset是一个复杂的命令,可以做很多事情。如果你使用git commit <commit-id>,那么HEAD将被移动到那个提交--如果没有其他引用(分支,标签)指向最近的提交,可能会丢失最近的提交。git reset不指定提交将不会移动HEAD。git reset与git reset --mixed相同,它将暂存区恢复到当前提交git reset --hard将把暂存区和工作树恢复到当前提交,丢失所有本地未提交的更改。git reset --soft不会更改您的临时区域或工作树。事实上,这个命令根本不会进行任何更改。git --reset soft通常与commit-id一起使用,以将HEAD(当前提交)更改为不同的提交,同时保持工作树和暂存区的原样。
git status
git add
git rm --cached
git commit <commit-id>
git reset --mixed
git reset --hard
git reset --soft
git --reset soft
f87krz0w2#
以您的情况,使用git reset并不是最好的选择。简单的方法是使用下面两种方法之一。1.如果你想从暂存区(索引/缓存)删除的文件,它在之前的一些提交中被跟踪
git restore --staged <filenames> or git rm --cached <filenames>
1.其他情况
git restore --staged <filenames>
1.可选的,也许你仍然可以使用git reset,但一定要小心,因为它很容易发生意外
git reset <filename>
brgchamk3#
使用以下git命令:git rm --cached
3条答案
按热度按时间yvfmudvl1#
git reset
将还原暂存区以反映当前提交。(HEAD).git status
将报告没有暂存更改。这实际上会撤消您可能执行的所有git add
和git rm --cached
命令。git reset
是一个复杂的命令,可以做很多事情。如果你使用git commit <commit-id>
,那么HEAD将被移动到那个提交--如果没有其他引用(分支,标签)指向最近的提交,可能会丢失最近的提交。git reset
不指定提交将不会移动HEAD。git reset
与git reset --mixed
相同,它将暂存区恢复到当前提交git reset --hard
将把暂存区和工作树恢复到当前提交,丢失所有本地未提交的更改。git reset --soft
不会更改您的临时区域或工作树。事实上,这个命令根本不会进行任何更改。git --reset soft
通常与commit-id一起使用,以将HEAD(当前提交)更改为不同的提交,同时保持工作树和暂存区的原样。f87krz0w2#
以您的情况,使用git reset并不是最好的选择。简单的方法是使用下面两种方法之一。
1.如果你想从暂存区(索引/缓存)删除的文件,它在之前的一些提交中被跟踪
1.其他情况
1.可选的,也许你仍然可以使用git reset,但一定要小心,因为它很容易发生意外
brgchamk3#
使用以下git命令:
git rm --cached