我无法在Android Studio的"提交更改"屏幕上看到更改的文件

1 git push commit android-studio

当我去的时候VCS>Commit changes,我看到以下屏幕:

我目前在Android Studio中的

我可能错误地按下某个按钮或某些东西,从那以后我就不能提交整个项目,只提供一个文件(.iml文件).
为什么我看不到项目中的任何其他文件?

Mat*_*hak 5

第一件事

正如你之前得到的答案中提到的,你无法像你所说的那样提交整个项目.您只能提交尚未记录的更改.
请记住,如果您发现"提交更改"屏幕中没有文件,则无需恐慌.对文件的更改是安全可靠的,它们已由git记录,您不会丢失这些更改.

尽管如此,不同意之前的回答.根据我的理解,您对项目进行了一些更改,但现在无法找到它们.正如你在问题中所说的那样 - 你会记得偶然地按下某些东西,现在文件从你能够提交的文件列表中"消失"了.

问题的可能原因

在这种情况下,让我们一起弄清楚这些变化的位置.
有很多可能性:

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

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

记录对存储库的更改

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

您可以阅读"Git Basics"一书中的解释,以获取更多信息:

请记住,工作目录中的每个文件都可以处于以下两种状态之一:已跟踪或未跟踪.跟踪文件是最后一个快照中的文件; 它们可以不被修改,修改或分阶段.未经跟踪的文件是其他所有内容 - 工作目录中的任何文件都不在您的上一个快照中且不在您的暂存区域中.当您第一次克隆存储库时,所有文件都将被跟踪和修改,因为Git只是检查了它们并且您没有编辑任何内容.

在编辑文件时,Git会将它们视为已修改,因为自上次提交后您已对其进行了更改.您暂存这些已修改的文件,然后提交所有暂存的更改,并重复循环.

文件状态的生命周期


将文件添加到Git

根据规则,Android Studio会根据它们在git中的状态标记目录中的文件.

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

文件的颜色根据他们的Git状态

如果您发现存储库中的某些文件名显示为红色,则可以:
Right Click => Git => Add并且它们将由git跟踪,您将在尝试提交时看到它们.


Git Ignore List

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


存在变化

来自"Git Basics"一书:

通常,当你一直在处理你的项目的一部分时,事情处于混乱的状态,你想要切换一些分支来处理其他事情.问题是,你不想做半完成工作的提交,这样你以后就可以回到这一点.这个问题的答案是git stash命令.

Stashing采用工作目录的脏状态 - 即修改后的跟踪文件和分阶段更改 - 并将其保存在一堆未完成的更改中,您可以随时重新应用这些更改.

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


承诺改变而不是推动它们

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

  • 从本地存储库的角度来看:
    记录更改,文件返回到"未修改"模式,在提交屏幕上再也看不到它们,直到您将进行下一次更改.
  • 从远程存储库的角度来看:
    由于您没有执行push命令,因此没有更新.

这是来自Oliver Steele的精彩图片,它解释了git模型和命令:
Git数据存储图

为了解决这个问题,所有你需要做的就是通过推动改变你的远程仓库:
Right click => Git => Repository => Push.那么简单.


进一步阅读

以下是一些有用的链接:

希望我的回答能帮助你解决问题:)