GIT 中是否有一种方法可以删除更改的文件,如果更改的字符少于 2 个,则不提交更改?
Is there a way in GIT, to remove files changed from being committed if it has less than 2 characters changed?
我一直在做一个项目,编辑了一个文件夹中的一堆文件。此文件夹位于我的本地,未被 GIT 监视。我通常将整个文件夹复制到另一台由 GIT 监视的计算机中,以将其推送到存储库。现在的问题是,由于行尾和空格的出现,一堆文件被显示为已更改,因为它正在从 windows 复制到 linux 框。
我执行了以下命令:git diff --stat 以显示所有随 lines/characters 的 # 更改的文件。
如您所见,其中许多文件的更改为零。但是,它们仍然出现在我的 git status 修改部分。
由于我从未对这些文件进行过任何更改,因此如何删除这些文件或将其恢复为正常状态?
检查您在复制这些文件的目标 Git 存储库上的配置。
git config core.autocrlf
确保将其设置为 false:git config core.autocrlf false
(see more here).
然后仔细检查 .gitattributes
文件的存在和内容。它们也可以通过 core.eol
directives.
影响 eol
我认为这些文件更有可能是由于模式更改而出现的。在其中一个上尝试 运行 git diff
。你看到这样的东西了吗?
$ git diff query.viewport.js
diff --git a/query.viewport.js b/query.viewport.js
old mode 100644
new mode 100755
如果是这样,那么您也许可以通过以下方式解决此问题:
$ find modules/hotsite/ -type f -print0 | xargs -0 chmod -x
我一直在做一个项目,编辑了一个文件夹中的一堆文件。此文件夹位于我的本地,未被 GIT 监视。我通常将整个文件夹复制到另一台由 GIT 监视的计算机中,以将其推送到存储库。现在的问题是,由于行尾和空格的出现,一堆文件被显示为已更改,因为它正在从 windows 复制到 linux 框。
我执行了以下命令:git diff --stat 以显示所有随 lines/characters 的 # 更改的文件。
如您所见,其中许多文件的更改为零。但是,它们仍然出现在我的 git status 修改部分。
由于我从未对这些文件进行过任何更改,因此如何删除这些文件或将其恢复为正常状态?
检查您在复制这些文件的目标 Git 存储库上的配置。
git config core.autocrlf
确保将其设置为 false:git config core.autocrlf false
(see more here).
然后仔细检查 .gitattributes
文件的存在和内容。它们也可以通过 core.eol
directives.
我认为这些文件更有可能是由于模式更改而出现的。在其中一个上尝试 运行 git diff
。你看到这样的东西了吗?
$ git diff query.viewport.js
diff --git a/query.viewport.js b/query.viewport.js
old mode 100644
new mode 100755
如果是这样,那么您也许可以通过以下方式解决此问题:
$ find modules/hotsite/ -type f -print0 | xargs -0 chmod -x