我使用命令错误地将文件添加到 Git :

git add myfile.txt

我还没跑呢git commit。我如何撤销这些修改,使这些修改不包含在承诺中?


当前回答

要撤销git add, 使用 :

git reset filename

其他回答

吉特拥有每一个可以想象到的行动的指令, 但是它需要广泛的知识才能把事情弄好, 并且因为它充其量是反直觉的...

你以前做过的事:

  • 更改文件并使用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 rm --cached . -r

将“ un- add- add” 添加您从当前目录中添加的所有内容递归到当前目录

更新2019年更新

正如其他人在相关问题中所指出的(见A/CN.9/WG.III/WG.II),在这里, 在这里, 在这里, 在这里, 在这里, 在这里, 和在这里现在可以了取消一个单独的文件与:

git restore --staged <file>

取消所有文件以下列方式写成:

git restore --staged .

Notes

git restore2019年7月以2.23版本发布。
--staged旗帜, 它会恢复索引的内容( 在此询问什么 ) 。

运行时git status与 Saged 未经发送文件一起, Git 现在建议用这个来解开 Page 文件( 而不是git reset HEAD <file>在 v2.23 之前使用过。

git add myfile.txt# 这将将您的文件添加到待发列表中

与这个命令完全相反的是,

git reset HEAD myfile.txt  # This will undo it.

因此,您将处于上一个状态。指定的状态将再次出现在未跟踪的列表中(先前的状态)。

它会用指定的文件重置你的头。 所以, 如果您的头没有它意味着, 它只会重置它 。

如果你在初始承诺中,你不能使用git reset,只要声明“破产破产”并删除.git文件夹重新开始