我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
我使用命令错误地将文件添加到 Git :
git add myfile.txt
我还没有执行 git 承诺 。 我如何撤销此操作, 使这些更改不被包含在承诺中 ?
当前回答
还有一个互动模式:
git add -i
选择 选项 3 到 取消 添加文件 。 在我的情况中, 我通常要添加多个文件, 用交互模式, 您可以使用这样的数字来添加文件 。 这将除 4: 1, 1, 2, 3, 和 5 以外, 全部要用这个数字来添加文件 : 1, 2, 3 和 5
要选择一个序列, 只要类型 1-5 就可以从 1 到 5 全部取出 。
Git 中转文件
其他回答
git 添加我的文件. txt # 这将将您的文件添加到待发列表中
与这个命令完全相反的是,
git reset HEAD myfile.txt # This will undo it.
因此,您将处于上一个状态。指定的状态将再次出现在未跟踪的列表中(先前的状态)。
它会用指定的文件重置你的头。 所以, 如果您的头没有它意味着, 它只会重置它 。
取消对未承诺更改的修改的 git 添加 :
git reset <file>
这将将文件从当前索引( “ 即将被承诺” 列表) 中删除, 而不更改其它内容 。
取消所有文件的所有更改 :
git reset
在旧版本的 Git 中, 上述命令分别相当于 git 重置 HEAD < file > 和 git 重置 HEAD, 如果 HEAD 未定义( 因为您尚未在仓库中做出任何承诺) 或含糊不清( 因为您创建了一个名为 HEAD 的分支, 这是您不应该做的蠢事 ) , 则上述命令将失败。 但是, 在 Git 1.8. 2 中, 这被更改了 。 因此, 在现代版本的 Git 中, 您可以在第一次承诺之前使用上面的命令 :
当您在历史中没有任何承诺时, “ 将重置” (没有选项或参数) 用于错误退出, 但它现在给了您一个空索引( 匹配不存在的重置, 您甚至没有在 ) 。
文献资料:Git重置
我第一次遇到这个问题时, 我发现这篇文章在这里, 从第一个答案我学到我应该做的是 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。 也许从这里学习 。
假设我创造了一个新的文件, 新的File. txt :
调
假设我无意中添加文件, git 添加新的File. txt :
调
现在我要撤销此添加, 在承诺前, git 重置新文件。 txt :
调
git rm --cached . -r
将“ un- add- add” 添加您从当前目录中添加的所有内容递归到当前目录