禁用git add .命令

5
很多次我会误用git add .命令将不需要的文件加入到暂存区中。我想知道是否有一种方法能够完全禁用该命令,这样我只会使用git add 文件名命令?

1
如果你错误地添加了一些不想要的文件,只需要使用 git reset 命令,这将取消暂存所有内容。 - bereal
2
你为什么一直打 git add .<RETURN> 呢? - MicroVirus
@MicroVirus,我猜这是svn的一个坏习惯,它默认只添加已跟踪的文件,而git则会将所有文件都加入。 - mariusm
3
或者,您可以将不需要的路径添加到.gitignore文件中。 - mariusm
还有一个命令 "git add -u",它只会添加已跟踪文件的更改;忽略所有未跟踪的文件。 - Lars Noschinski
显示剩余3条评论
4个回答

8

SVN再教育

我猜这可能是从svn带来的习惯,它默认只添加已被跟踪的文件[...]

你需要放弃以前的想法 :)

你应该经常运行git status。如果你想要忽略的文件作为未跟踪的文件列出,那么你应该编辑你的.gitignore文件,使得这些文件实际上被忽略。因为git add不会影响被忽略(和未跟踪的)文件,所以你就可以使用git add .同时将所有感兴趣的文件(仅有这些)一次性添加到暂存区。

如何完全禁止使用git add .

Git本身不允许这样做,但如果你真的想完全禁止使用git add .(和git stage .,它们是完全等效的),你可以在~/.<shell>rc文件中编写一个小包装器:

git() {
    if [ "$1" = "add" -o "$1" = "stage" ]; then
        if [ "$2" = "." ]; then
            printf "'git %s .' is currently disabled by your Git wrapper.\n" "$1";
        else
            command git "$@";
        fi
    else
        command git "$@";
    fi;
}

2
提供解决问题的方案并解释有关不良“SVN”习惯的内容,可以获得+1修复此负投票。 - Joël Salamin
2
很难改变不良习惯(我之前是纯TFS用户,后来转向git),但你的评论很中肯,重要的是改变这些不良习惯,而不是寻找解决方法。 - Joël Salamin

0
关于 git add . 的重要点是,它查看工作树并将所有更改或新添加但未被忽略的路径添加到暂存更改中,而不会将任何“rm”操作暂存。
如果我正确理解了问题,您只想“撤消”对该文件执行的 git add 操作。
如果是这种情况,则
git reset HEAD <file>

会完成工作。

您的修改将被保留,文件将再次显示在已修改但尚未暂存的git status集合中。

有关详细信息,请参阅git reset的手册页面。


-1

你应该将所有不想纳入版本控制的文件和目录添加到 .gitignore 文件中。

如果你只是想排除所有内容,那么就不要执行 git add .


-1

撤销 git add,取消暂存,删除 git rm --cached filename.txt,从索引中删除,取消提交,使用 git reset filename.txt。

会将名为 filename.txt 的文件从当前索引中删除,“即将被提交”的区域,而不改变其他任何内容。

要撤消 git add .,请使用 git reset(没有点)。


从 http://data.agaric.com/undo-git-add-remove-files-staged-git-commit 复制粘贴以下与编程相关的内容 - JJJ
请将以下与编程有关的内容从英语翻译成中文。仅返回翻译后的文本:请在答案中添加源代码并正确格式化代码块。 - xeruf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接