【问题标题】:How to commit and/or add unchanged file?如何提交和/或添加未更改的文件?
【发布时间】:2012-08-01 04:53:50
【问题描述】:

我有一种情况,我修改的文件没有显示为修改后的文件。

我还能提交那个文件吗?

我可以将列为未更改文件的文件添加到已更改文件吗?谢谢!

更新: 当我尝试添加文件时,终端给出这样的错误:

The following paths are ignored by one of your .gitignore files:
folderpath/filename.java
Use -f if you really want to add them.
fatal: no files added

但是当我打开我的 .gitignore 文件时:

bin
gen
#built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated GUI files
*R.java

# Mac OS file
.DS_Store

信息/排除

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

我非常确定我的文件夹路径及其文件名不包含在 .gitignore 和排除文件中

【问题讨论】:

  • 嗨,eckes ..我在其他帖子上试过你的答案:-添加了文件夹-我的文件不在 .gitignore 和排除列表中-当我尝试输入 git config --global core .excludesfile,终端不打印任何东西... - git status --ignored 显示我所有要提交的更改列表(听起来很奇怪吧?)
  • 是的,我存放该文件的文件夹不在 bin/gen 中 :)
  • 感谢您的解释!我从来不知道这样的规则。不,我的文件夹路径名不包含 gen 或 bin
  • 您能否发布完整路径和完整文件名?这将帮助我们找出问题所在!
  • 嗨,eckes..对不起,我不能透露完整的路径,因为它是凭证:(

标签: git github git-commit git-add


【解决方案1】:

git 不会跟踪未跟踪文件中的更改。

所以首先要确保你的文件实际上是被 git 跟踪的。其他人已经详细说明了为什么您的文件可能会被 ingored (.gitignore, .git/info/exclude,...)

然后确保您的文件确实包含更改(似乎很明显)。 您对文件做了哪些更改? 请注意,您可以将 git 配置为忽略对 EOL 的更改,因此通过将 CRLF 更改为 LF 来修改文件不符合“要提交的更改”的条件。检查this

【讨论】:

  • 请看我编辑的帖子。我在该文件中添加了一些代码行,而不是简单的字符或 EOL ..
【解决方案2】:

请检查:您修改后的文件可能与存储库根目录中.gitignore 文件中的模式匹配。如果发生这种情况,文件将“超出范围”git

【讨论】:

  • 但是如果该文件位于哪个文件夹?也许由于文件夹限制而被忽略?您能否提供文件和文件夹的全名,以便我们更清楚地了解问题?我相信这不是什么大秘密?
  • 感谢您的评论,但是当我尝试修改该文件夹中的其他文件时,git 可以将我修改的文件检测为已修改。听起来很奇怪吧?
  • 是的...但是这条线*R.java 可能你的文件名匹配它吗?如果您在 Windows 上,它可能会忽略大小写和...得分!我建议一一禁用.gitignore 中的语句,运行git status 看看发生了什么。这是“猴子的方法”,但比猜测更有效。
  • R.java 是 Eclipse 自动生成的文件。从 .gitignore 内容看,我的文件不包括在内。我想我会按照 eckes 的建议使用 -f 添加文件..
  • 你也检查了.git/info/exclude吗?
【解决方案3】:

我正在检查您的 .gitignore:https://github.com/github/gitignore/blob/master/Android.gitignore 的初始来源

我的脑海中突然冒出一个想法:您正在使用以下模式:

bin
gen

当他们使用时

# generated files
bin/
gen/

区别不大 - / 但您的规则不仅可以匹配文件夹,还可以匹配文件。

【讨论】:

  • @Rendy,你能透露一下文件名吗?因为很难找到答案——我们需要知道它与哪个模式匹配。
  • 嗨 alexey,感谢您的帮助,但我无法透露它的路径,因为它是凭证 :(
  • 好的,但是您确定在文件名中找不到bingen 块吗?我敢打赌他们是!
【解决方案4】:

您发布的.gitignore 并不表示该文件已被忽略,但定义要忽略的文件的工作副本中不仅存在您的.gitignore

请参阅this answer,了解与忽略事物相关的文件和情况的概述。

尽管如此,你从 git 得到的信息很清楚:如果你不想找到文件被忽略的原因,Use -f if you really want to add them.


编辑:
如果您确定检查了所有.gitignores,请仔细查看.gitignore 中的模式。例如,您的.gitignore 包含模式gen。如果在 mygenerator/myfile.java 找到您更改的文件,gen 模式将匹配 mygenerator 并忽略更改...

【讨论】:

  • 完全同意您的编辑!我相信,斜杠是问题的根源。
猜你喜欢
  • 2019-08-08
  • 2016-10-16
  • 2011-08-14
  • 2014-10-22
  • 2012-08-23
  • 1970-01-01
  • 2021-12-11
相关资源
最近更新 更多