我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
当前回答
git 添加我的文件. txt # 这将将您的文件添加到待发列表中
与这个命令完全相反的是,
git reset HEAD myfile.txt # This will undo it.
因此,您将处于上一个状态。指定的状态将再次出现在未跟踪的列表中(先前的状态)。
它会用指定的文件重置你的头。 所以, 如果您的头没有它意味着, 它只会重置它 。
其他回答
我第一次遇到这个问题时, 我发现这篇文章在这里, 从第一个答案我学到我应该做的是 Git 重置 < filename > , 效果很好 。
最后,我碰巧在我的主 Git 文件夹中有一些子文件夹。 我发现很容易在子文件夹中添加所有文件, 然后重置一些我不想添加的文件 。
现在,我有很多文件和子文件夹。 单次重置是无聊的, 但还是容易添加。 首先, 然后再重置少数重/ 不受欢迎但有用的文件和文件夹 。
我发现以下方法(这里或这里没有记录)比较容易。我希望它能有所帮助:
假设你的情况如下:
Folder/SubFolder1/file1.txt
Folder/SubFolder2/fig1.png
Folder/SubFolderX/fig.svg
Folder/SubFolder3/<manyfiles>
Folder/SubFolder4/<file1.py, file2.py, ..., file60.py, ...>
您想要添加所有文件夹和文件, 但不是 digg1. png, 而不是 SubFolderX, 而不是 file60. py, 而列表还在不断增长...
首先, 制作/ 创建一个 shash shell 脚本并给它命名 。 例如, git_ add. sh :
然后将所有路径添加到所有文件夹和文件, 您想要在 git 重设之前重置所有文件夹和文件 -- 。 您可以随文件列表增长, 很容易地将路径复制到脚本 git_ add.sh。 git_ add.sh 脚本应该像这样看 :
#!/bin/bash
git add .
git reset -- Folder/SubFolder2/fig1.png
git reset -- Folder/SubFolderX
git reset -- Folder/SubFolder4/file60.py
# ! / bin/ bash 很重要 。 然后做源 git_ add. sh 运行它。 在此之后, 您可以执行 git 承诺 - m " some opotion" , 然后再做 git push - u 源主, 如果您已经设置了 Bitbucket/ Github / Github 。
免责声明:我只在Linux测试过这个。
如果您在本地 git 仓库中总是保留很多文件和文件夹, 但是您不想让 Git 添加... , 例如视频和数据文件时跟踪更改, 您必须学习如何使用. gitignore。 也许从这里学习 。
更新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 reset HEAD~1 --mixed
键入 :
git status
Git会告诉你什么是舞台,等等, 包括关于如何解除舞台的指示:
use "git reset HEAD <file>..." to unstage
我发现吉特做的相当不错 裸体我做正确的事情 在这样的情况下。
注:最近Git版本(1.8.4.x)更改了此电文:
(use "git rm --cached <file>..." to unstage)
只要键入 git 重置, 它就会返回, 并且它就像您自上次承诺以来从未键入过 git 添加 。 请确认您以前已经承诺过 。