正如您之前获得的答案中所述,您不能像您所说的那样提交整个项目。您只能提交尚未记录的更改。请记住,如果您在“提交更改”屏幕中看到没有文件,则无需担心。对您文件的更改是安全无虞的,它们已由git记录下来,您不会丢失这些更改。
尽管如此,不同意先前的答案。据我了解,您对项目进行的更改很少,但现在找不到它们。正如您在问题中所说的那样-您回想起偶然按下某些东西,现在文件已经从您可以提交的文件列表中“消失”了。
在这种情况下,我们尝试一起找出可以进行哪些更改。有很多可能性:
首先,让我们介绍一下git记录更改的方式-
Git正在跟踪您的文件,以查看文件是否有任何更改。如果是这样,git将注意到更改,您将能够提交更改。所有跟踪的文件均以“未修改”开头。然后,当您编辑它们时,它们被标记为“已修改”。当您选择提交文件时,git会为提交做好准备,询问您要提交的文件,并将其标记为“暂存”。提交完成后,所有文件都恢复为“未修改”状态。
您可以阅读《 Git基础知识》一书中的说明以获取更多信息:
请记住,您的工作目录中的每个文件都可以位于以下两个文件之一 状态:已跟踪或未跟踪。跟踪文件是指 最后快照;它们可以不修改,修改或上演。未追踪 文件就是一切–您工作目录中的所有文件 不在上一个快照中,也不在暂存区中。什么时候 您首先克隆一个存储库,将跟踪所有文件并 未修改,因为Git刚刚签出了它们,而您尚未编辑 任何东西。
编辑文件时,Git会将其视为已修改,因为您已经 自上次提交以来更改了它们。您登台这些修改的文件 然后提交所有已进行的更改,然后重复该循环。
根据规则,Android Studio将根据其在git中的状态标记目录中的文件。
[如果您看到存储库中的某些文件名显示为红色,则可以:Right Click => Git => Add
,它们将被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提供了两项更改:提交更改以及提交和推送更改。您可能选择了提交更改,在这种情况下:
这里是Oliver Steele的漂亮图片,它解释了git模型和命令:
为了解决这个问题,您要做的就是通过以下方法将更改推送到远程存储库:Right click => Git => Repository => Push
。这么简单。
以下是一些有用的链接:
希望我的回答对您解决问题有帮助:)
Git仅提交对文件的更改,因此,除非您更改项目中的每个文件,否则您将无法暂存所有文件进行提交。提交快照将包含更改的文件以及所有其他文件,因此不必担心丢失它们。
就我而言,发生的事情是我的Android Studio版本控制偏好设置有两个“ git root”,其中之一是错误的。我猜这搞砸了寻找修改文件的算法。有关更多详细信息,请参见this StackOverflow post。
其他要检查的内容包括命令行。做一个git status
,你看到修改过的文件了吗?实际上,这应该是首先要检查的事情之一。如果您确实看到带有git status
的文件,则问题可能是您的Android Studio设置针对版本控制和/或版本控制-> Git的配置错误。
也可以在我链接的同一Stack Overflow帖子中找到其他要检查的内容。