我正在尝试使用bash将文件推送到github。它们已经在那儿了,我正在上传带有新行和代码等的较新版本。但是当我尝试git add
然后git status
它说:
在分支机构主管
无需提交,工作目录干净
我正在使用的文件刚刚被修改。
我正在尝试使用bash将文件推送到github。它们已经在那儿了,我正在上传带有新行和代码等的较新版本。但是当我尝试git add
然后git status
它说:
在分支机构主管
无需提交,工作目录干净
我正在使用的文件刚刚被修改。
git diff
(或git status
)没有显示任何说明为什么没有要添加的内容。所以问题实际上是:“为什么git无法识别我的文件已更改?”
Answers:
我曾经有一个问题,曾经有一段时间我在文件上将git索引设置为“假定不变”。
您可以使用以下命令告诉git停止忽略对该文件的更改:
git update-index --no-assume-unchanged path/to/file
如果这样做没有帮助,那么对于其他奇怪的情况而言,重置可能就足够了。
在实践中,我发现删除了缓存的文件并将其重置为工作状态:
git rm --cached path/to/file
git reset path/to/file
该git rm --cached
只手段从索引中删除该文件,并reset
告诉混帐从最后一次提交刷新git的指数。
git add -f path/to/the/file
它将强制添加要提交的文件。
git add -f
那是在这个“假设不变”状态的文件,它确实没有工作-不得不要么git update-index
还是git rm --cached
接着一个git reset
,使其工作。
git rm --cached -r .
然后单击git reset .
。
git update-index --no-skip-worktree path/to/file
这就是我解决问题的方式
检查您的.gitignore
文件。您可能会发现该文件,该文件的扩展名或您尝试使用的文件的路径与中的条目匹配.gitignore
,这将说明为什么忽略该文件(而不将其识别为更改的文件)的原因。
当我遇到类似的问题时,情况就是这样。
lib/
,这使得git忽略了该文件夹。这样做没有问题-至少如果该文件夹不是您项目中的主文件夹,例如发生在我身上的事情。
就像已经讨论过的一样,文件可能被标记为“假定不变”,这基本上告诉git您不会修改文件,因此它不需要跟踪它们的更改。但是,这可能会影响多个文件,如果工作区很大,您可能不想一一检查所有文件。在这种情况下,您可以尝试: git update-index --really-refresh
根据文档:
Like --refresh, but checks stat information unconditionally, without regard to the "assume unchanged" setting.
基本上,它将强制git跟踪所有文件的更改,而不管“假定未更改”标志如何。
git status
,没有文件被更改,而是git add .
添加了两个文件,并git update-index --really-refresh
说这两个文件需要更新,但似乎什么也没做。任何想法?
git ls-files -v | grep '^[[:lower:]]'
如果没有帮助,您应该创建一个具有更多详细信息的问题,以便我们提供帮助您。
好吧,我们没有足够的答案来回答这个问题,所以我给你几个猜测:
1)您保存了更改,以修复类型: git stash pop
2)您进行了更改并提交了更改,您应该能够看到您的提交 git log
3)您所做的更改做了某种git reset --hard
或其他更改,您的更改可能在reflog中,键入,git reflog --all
然后如果您确实找到它,则签出或挑选该ref。
4)您已多次签出同一仓库,但您输入的是错误的仓库。
git commit --amend
可以将新更改放入上一次提交中,但是如果您已经共享提交,请不要这样做。
发生了类似这样的时髦事件。Eclipse Kepler的git插件自动将.gitignore文件夹中的所有项目文件夹标记为已忽略。
当我commit
进入Team
菜单时,它们都将重新设置为忽略。据我所知,这是因为我将它们设置为在父项目中派生的。取消将它们标记为已dervied
修复。我以前从未在Indigo上看到过这个。希望对大家有所帮助。
TL; DR; 您是否在正确的存储库中?
我的故事有点有趣,但我认为可能会遇到一个可能遇到类似情况的人,因此请在此处分享。
实际上,在我的机器上,我有两个单独的git存储库,repo1
并repo2
在名为的同一根目录中进行配置source
。这两个存储库实质上是我在公司中使用和使用的两种产品的存储库。现在,作为标准指南,所有产品的源代码目录结构在我公司中完全相同。
因此,在没有意识到的情况下,我修改了一个repo2
我应该在其中更改的完全相同的命名文件repo1
。所以,我一直在运行命令git status
,repo1
并且一直在发出相同的消息
在分支机构主管
无需提交,工作目录干净
半个小时。然后我的同事将其视为独立的双眼,这件事使我注意到我错了,但外观很相似。我切换到repo1
Git 的那一刻开始注意到更改的文件。
不太常见的情况。但是你永远不知道!
通常,与这个问题有关,请首先检查您是否正在编辑自己认为的文件!当我在编辑一个转译的JavaScript文件而不是源文件时遇到了这个问题(转译的版本不在源代码控制下)。
我在这里有同样的问题VS2015无法识别我的js文件更改,因此从存储库设置中删除了远程服务器,然后重新添加了远程URL路径解决了我的问题。