我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
当前回答
假设我创造了一个新的文件, 新的File. txt :
调
假设我无意中添加文件, git 添加新的File. txt :
调
现在我要撤销此添加, 在承诺前, git 重置新文件。 txt :
调
其他回答
只要键入 git 重置, 它就会返回, 并且它就像您自上次承诺以来从未键入过 git 添加 。 请确认您以前已经承诺过 。
更新2019年更新
正如其他人在相关问题中所指出的(见这里、这里、这里、这里、这里、这里、这里、这里和这里),你现在可以拆开一个单一文件:
git restore --staged <file>
并取消所有文件( 从回购根部) , 使用 :
git restore --staged .
Notes
git reformation于2019年7月推出,第2.23版发行,加上 " 级国旗 " ,它恢复了指数的内容(这里要求的内容)。
当 Git 状态与 saged uncommitted 文件同步运行时, Git 现在就建议用它来取消 page 文件( 而不是像 v2. 23 之前那样重置 Git 重置 HEAD < file > ) 。
也许Git已经进化了 自从你提出问题之后
$> git --version
git version 1.6.2.1
现在,你可以试试:
git reset HEAD .
这应该就是你要找的
使用 git 添加 - i 来从您即将做出的承诺中删除仅添加的文件。 例如 :
添加您不想添加的文件 :
$ git add foo
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: foo
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# [...]#
进入交互式添加以取消您的添加( 这里输入的 git 命令是“ r”( revert) , “ 1”( 列表返回显示的第一个条目) , “ return” 退出返回模式, 以及“ q” ( quit) :
$ git add -i
staged unstaged path
1: +1/-0 nothing foo
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> r
staged unstaged path
1: +1/-0 nothing [f]oo
Revert>> 1
staged unstaged path
* 1: +1/-0 nothing [f]oo
Revert>>
note: foo is untracked now.
reverted one path
*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> q
Bye.
$
这就是你的证据 证明"foo"又回到了未追踪的名单上
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
# [...]
# foo
nothing added to commit but untracked files present (use "git add" to track)
$
此命令将卸载您的更改 :
git reset HEAD filename.txt
您也可以使用
git add -p
以添加文件的部分。