【问题标题】:Disable git add . command禁用 git add 。命令
【发布时间】:2014-11-11 02:27:24
【问题描述】:

很多时候我使用git add . 命令错误地将不需要的文件添加到暂存区。

我想知道是否有一种方法可以完全禁用此命令,以便我只使用git add file

【问题讨论】:

  • 如果您错误地添加了一些您不想添加的文件,只需使用git reset,这将取消暂存所有内容。
  • 这不是我要找的。​​span>
  • 也许训练自己,习惯加“-u”,如:git add -u。
  • 那你怎么一直输入git add .<RETURN>
  • 另外一种方法可以向 gitignore 添加不需要的路径

标签: git git-add


【解决方案1】:

SVN再教育

我猜这是 svn 的一个坏习惯,它默认只添加跟踪的文件 [...]

你必须忘掉你学到的东西:)

您应该经常运行git status。如果要忽略的文件被列为未跟踪文件,则应编辑 .gitignore 文件,以便这些文件实际上被忽略。因为git add 不会影响被忽略(和未跟踪)的文件,所以您将能够使用git add . 一次性暂存所有感兴趣的文件(并且只有那些文件)。

如何完全禁用git add .

Git 本身不允许这样做,但如果你真的想完全禁止使用 git add .(和 git stage .,完全等价),你可以在 git 周围写一个小包装器(在你的~/.<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;
}

【讨论】:

  • +1 来解决这个反对意见,您提供了解决问题的方法,并解释了不良的SVN 习惯
  • 很难改变坏习惯(在切换到 git 之前我是一个纯粹的 TFS 用户)但是你的评论很中肯,改变这些坏习惯而不是寻找解决方法非常重要
【解决方案2】:

undo git add unstage remove git rm --cached filename.txt git delete from index cancel from commit git 重置文件名.txt

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

撤消 git add 。使用 git reset(无点)。

【讨论】:

【解决方案3】:

您应该将版本控制下不需要的所有文件和目录添加到 .gitignore 文件中。

如果您只想不添加所有内容,那么请不要执行 git add 。

【讨论】:

    【解决方案4】:

    关于 git add . 的重要一点是,它查看工作树并将所有这些路径添加到暂存的更改中,如果它们已更改或是新的且未被忽略,它不会暂存任何“rm”操作。

    如果我正确理解了这个问题,您只是想“撤消”为该文件完成的 git add。

    如果是这样的话,那么

    git reset HEAD <file>
    

    会做的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 2013-06-02
      • 2015-10-13
      • 2017-07-19
      • 2013-11-04
      • 2018-05-02
      相关资源
      最近更新 更多