我在Android Studio的“提交更改”屏幕上看不到更改的文件

问题描述 投票:1回答:3

当我转到VCS>Commit changes时,看到以下屏幕:

my current "commit changes" screen in Android Studio

我可能误按了某个按钮或某些东西,从那时起,我无法提交整个项目,只能提交一个文件(.iml文件)。为什么我看不到项目中的其他文件?]

git android-studio push commit
3个回答
5
投票

首先考虑的事情

正如您之前获得的答案中所述,您不能像您所说的那样提交整个项目。您只能提交尚未记录的更改。请记住,如果您在“提交更改”屏幕中看到没有文件,则无需担心。对您文件的更改是安全无虞的,它们已由git记录下来,您不会丢失这些更改。

尽管如此,不同意先前的答案。据我了解,您对项目进行的更改很少,但现在找不到它们。正如您在问题中所说的那样-您回想起偶然按下某些东西,现在文件已经从您可以提交的文件列表中“消失”了。

问题的可能原因

在这种情况下,我们尝试一起找出可以进行哪些更改。有很多可能性:

  1. 您可能选择了不将文件添加到git
  2. 您可能已将文件添加到忽略列表中
  3. 您可能已经隐藏了这些更改
  4. 您可能已提交更改,但尚未将其推送到远程存储库中

首先,让我们介绍一下git记录更改的方式-

记录对存储库的更改

Git正在跟踪您的文件,以查看文件是否有任何更改。如果是这样,git将注意到更改,您将能够提交更改。所有跟踪的文件均以“未修改”开头。然后,当您编辑它们时,它们被标记为“已修改”。当您选择提交文件时,git会为提交做好准备,询问您要提交的文件,并将其标记为“暂存”。提交完成后,所有文件都恢复为“未修改”状态。

您可以阅读《 Git基础知识》一书中的说明以获取更多信息:

请记住,您的工作目录中的每个文件都可以位于以下两个文件之一 状态:已跟踪或未跟踪。跟踪文件是指 最后快照;它们可以不修改,修改或上演。未追踪 文件就是一切–您工作目录中的所有文件 不在上一个快照中,也不在暂存区中。什么时候 您首先克隆一个存储库,将跟踪所有文件并 未修改,因为Git刚刚签出了它们,而您尚未编辑 任何东西。

编辑文件时,Git会将其视为已修改,因为您已经 自上次提交以来更改了它们。您登台这些修改的文件 然后提交所有已进行的更改,然后重复该循环。

The lifecycle of the status of your files


向Git添加文件

根据规则,Android Studio将根据其在git中的状态标记目录中的文件。

  • 当名称显示为蓝色时,表示文件已被修改。
  • [当名称显示为绿色时,表示该文件是新文件,已添加到git跟踪的文件集中。
  • 当名称显示为红色时,表示该文件未跟踪。
  • 当名称显示为白色/灰色时,表示文件未修改。

Colors of File According to their Git Status

[如果您看到存储库中的某些文件名显示为红色,则可以:Right Click => Git => Add,它们将被git跟踪,当您尝试提交时,您将能够看到它们。


Git忽略列表

Gitignore列表将使您指定有意未跟踪的文件以将其忽略。忽略列表基本上是一个文件,其中包含您希望git取消跟踪的工作目录中文件的位置。此列表将防止将未跟踪的文件添加到git跟踪的文件集中(请记住,git将继续跟踪已被跟踪的所有文件)。如果是这种情况,将文件添加到gitignore列表将使其从您可以提交的文件列表中“消失”。因此,为了取回并再次提交它,您需要将其从gitignore列表中删除。为此,您需要在git命令行中键入git add -A命令。此命令将暂存目录中的所有文件(新的,已修改的,已删除的),它将解决您的问题。此外,您应该查看在Android Studio上配置的“已忽略文件”列表,并确保您要提交的文件不存在。要访问“忽略的文件”列表,请转到Project => Settings => Version Control => Ignored Files(Windows和Linux)或Android Studio menu => Preferences => Version Control => Ignored Files(MacOS)。在此处,您可以将其从“忽略的文件”列表中删除。


隐藏的更改

摘自《 Git基础知识》一书:

通常,当您从事部分项目时, 混乱的状态,您想要切换分支以便继续工作 其他的东西。问题是,您不想提交 半完成工作只是为了让您稍后可以回到这一点。的 这个问题的答案是git stash命令。

隐藏会占用您的工作目录的脏状态-也就是说, 您修改过的跟踪文件和分段更改-并将其保存在 一堆未完成的更改,您可以随时重新应用。

您可能已经保存了文件,现在它们似乎没有被修改,因此您无法提交它们。为了取消隐藏它们(单击项目的主文件夹):Right Click => Git => Repository => UnStash Changes…,然后从列表中选择最新的存储,然后单击“Apply Stash”。如果您在列表中没有看到任何内容,或者列表中不包含您所做的最新更改,则情况并非如此。


提交更改但不推动更改

最后一个可能的选择是,您已经提交了更改,但尚未将其推送到远程存储库,因此您无法在云/其他计算机上看到它们。如上所述,git commit命令将记录对文件的更改,但是这里最重要的是将其记录在本地存储库中。为了同时更新远程存储库,您还需要使用git push命令来推送这些更改。Android Studio提供了两项更改:提交更改以及提交和推送更改。您可能选择了提交更改,在这种情况下:

  • 从本地存储库的角度来看:记录更改,文件返回到“未修改”模式,您看不到它们不再在提交屏幕上,直到下一个您将进行的更改。
  • 从远程存储库的角度来看:因为您没有执行push命令,所以没有更新。

这里是Oliver Steele的漂亮图片,它解释了git模型和命令:Git data stores diagram

为了解决这个问题,您要做的就是通过以下方法将更改推送到远程存储库:Right click => Git => Repository => Push。这么简单。


进一步阅读

以下是一些有用的链接:

希望我的回答对您解决问题有帮助:)


0
投票

Git仅提交对文件的更改,因此,除非您更改项目中的每个文件,否则您将无法暂存所有文件进行提交。提交快照将包含更改的文件以及所有其他文件,因此不必担心丢失它们。


0
投票

就我而言,发生的事情是我的Android Studio版本控制偏好设置有两个“ git root”,其中之一是错误的。我猜这搞砸了寻找修改文件的算法。有关更多详细信息,请参见this StackOverflow post

其他要检查的内容包括命令行。做一个git status,你看到修改过的文件了吗?实际上,这应该是首先要检查的事情之一。如果您确实看到带有git status的文件,则问题可能是您的Android Studio设置针对版本控制和/或版本控制-> Git的配置错误。

也可以在我链接的同一Stack Overflow帖子中找到其他要检查的内容。

© www.soinside.com 2019 - 2024. All rights reserved.