提交的文件在 git commit、git stash 和 git stash pop 之后不出现

Posted

技术标签:

【中文标题】提交的文件在 git commit、git stash 和 git stash pop 之后不出现【英文标题】:Files committed do not appear after git commit, git stash, and git stash pop 【发布时间】:2016-04-09 02:10:19 【问题描述】:

我对这个 git 东西很陌生,就我的经验而言,我以前从未遇到过这样的事情。

我有多个本地分支机构,我经常切换,因为我与一个小组一起工作,并使用其他分支机构作为参考。

在这种情况下,我的一个朋友提交并推送了一些东西到他的分支,他建议我们看看。

所以我在自己的分支上提交了我的更改,但像往常一样,每当我们打开它们时,有些 Xcode 文件会神奇地自行编辑,所以我认为只 git stash 它们是个好主意(在commit) 并稍后处理它们,这样我就可以检查我朋友的分支并获取更新。

完成后,我切换回我的分支,并执行git stash pop,并签出所说的文件并不重要。

然后我注意到我创建的文件不见了。

我试图做一个git revert,但它什么也没做,反正我不明白发生了什么。

这是我输入的命令列表:

git add Integra-Geochemistry/Controllers/WaterSamplingFormOneViewController.swift
git add Integra-Geochemistry/Views/WaterSamplingFormOneView.swift
git add Integra-Geochemistry/Xibs/WaterSamplingFormOne.xib
git status
git commit -m "Initial commit - added WaterSamplingForm"
git status
git branch
git branch dev/surface-thermal-sampling
git checout dev/surface-thermal-sampling
git checkout dev/surface-thermal-sampling
git stash
git status
git checkout dev/surface-thermal-sampling
git pull origin dev/surface-thermal-sampling
git branch
git status
git branch
git checkout dev/watersampling
git status
git stash pop
git checkout Integra-Geochemistry/Xibs/AddRadonFormView.xib
git checkout Integra-Geochemistry/Xibs/RadonReadingFormFourView.xib
git checkout Integra-Geochemistry/Xibs/RadonReadingFormThreeView.xib
git checkout Integra-Geochemistry/Xibs/RadonReadingFormTwoView.xib
git checkout Integra-Geochemistry/Xibs/RadonReadingFormView.xib
git log
git revert 63947089d3479fff91ae4fb2ba5d59bd39d0c30d

作为参考,这是日志文件(在我执行 git revert 之后)

commit 8f5a3b8a4db5bad0a750ba08cd2d5b6a8a2fe18e
Author: <-------->
Date:   Tue Jan 5 17:28:19 2016 +0800

    Revert "Initial commit - added WaterSamplingForm"

    This reverts commit 63947089d3479fff91ae4fb2ba5d59bd39d0c30d.

commit 63947089d3479fff91ae4fb2ba5d59bd39d0c30d
Author: <-------->
Date:   Tue Jan 5 17:13:35 2016 +0800

    Initial commit - added WaterSamplingForm

我做了很多提交、推送和切换分支,但我从来没有像这样消失过。

我的文件有没有可能正常且可恢复?我不想重新开始。谢谢。

【问题讨论】:

相关Q:***.com/questions/34519665/how-to-move-head-forward/… 【参考方案1】:

我的文件有没有可能正常且可恢复?我不想重新开始。谢谢。

是的。

输入 git reflog 并签出您想要返回的所需提交。

基本上,您在存储数据的 Git 中执行的每个操作,都可以在 reflog 中找到。

Git 非常努力不丢失您的数据,所以如果出于某种原因您认为它已经丢失,您很有可能可以使用 git reflog 将其挖掘出来。

这意味着您可以将其用作安全网:您不必担心合并、变基或其他操作会破坏您的工作,因为您可以使用此命令再次找到它。

阅读更多信息here

【讨论】:

感谢您的建议。不过,我制作的文件仍然没有出现在 Xcode 中,也没有出现在它们各自的目录中。我检查了其他分支,它们也不是他们的(日志停止在“初始提交 - 添加 WaterSamplingForm”之前的点)。 作为一个好习惯,不要使用 stash 使用分支来代替。如果你还没有提交你的文件,你可能想尝试使用 fsck 恢复它们。 ***.com/questions/34572728/… 我确实提交了文件(“初始提交 - 添加了 WaterSamplingForm”),我只是不想检查或忽略我不需要的文件(出于某种原因,查看Xcode 中的 xib 意味着您对其进行更改或其他内容)。我尝试了 fsck,但它们仍然不会出现。

以上是关于提交的文件在 git commit、git stash 和 git stash pop 之后不出现的主要内容,如果未能解决你的问题,请参考以下文章

git commit时暂时忽略已提交的文件

如何查看commit的内容

git提交不上去

文件改名字后,怎么在git中提交

GitGit 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )

GitGit 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )