我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没跑呢git commit
。我如何撤销这些修改,使这些修改不包含在承诺中?
我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没跑呢git commit
。我如何撤销这些修改,使这些修改不包含在承诺中?
当前回答
吉特拥有每一个可以想象到的行动的指令, 但是它需要广泛的知识才能把事情弄好, 并且因为它充其量是反直觉的...
你以前做过的事:
git add .
,或git add <file>
.你想怎样:
从索引中删除文件, 但保留其版本, 并保留工作副本中未承诺的更改 :
git reset HEAD <file>
从 HEAD 将文件重置为最后一个状态, 撤消更改并将其从索引中删除 :
# Think `svn revert <file>` IIRC.
git reset HEAD <file>
git checkout <file>
# If you have a `<branch>` named like `<file>`, use:
git checkout -- <file>
之所以需要这样做,是因为git reset --hard HEAD
单项文件不会工作。
删除删除<file>
从索引和版本中创建, 保留未翻过的文件, 更改工作副本 :
git rm --cached <file>
删除删除<file>
从工作副本和版本完全版本中产生 :
git rm <file>
其他回答
git reset filename.txt
将删除命名的文件filename.txt
从当前索引(也称为“存储区域”,即“即将实施”的改动”被保存的地方)中取出,不作任何其他改动(工作目录没有被覆盖)。
如上文所述,从中转区删除新文件(仅在出现新文件的情况下):
git rm --cached FILE
使用 rm -- -- 刻录仅用于新文件不小心添加 。
我会用git restore --staged .
或git restore --staged <filename>
您也可以使用git rm --cached
然而,git rm
命令应最好用于已跟踪的文件 。
还有一个互动模式:
git add -i
选择 选项 3 到 取消 添加文件 。 在我的情况中, 我通常要添加多个文件, 用交互模式, 您可以使用这样的数字来添加文件 。 这将除 4: 1, 1, 2, 3, 和 5 以外, 全部要用这个数字来添加文件 : 1, 2, 3 和 5
要选择一个序列, 只要类型 1-5 就可以从 1 到 5 全部取出 。