2016-07-28 73 views
2

我在BitBucket上创建了一个git仓库来跟踪我的脚本。我只有非常有限的git经验。我使用Linux和Windows的组合,但是我一直使用Windows上的git bash shell将文件添加到存储库,该驱动器映射到Linux共享。Git删除了我的文件。他们能恢复吗?

我过去几天一直在添加文件,但在我的一个提交中我输入了错误的注释。我想解决这个问题并用Google搜索解决方案。我发现的建议是使用rebase。我试过这个,但它不成功,所以我决定只是住在错误的评论。

之后,我创建了两个脚本,然后我想用'git add'添加到存储库中。

当我试图提交这些消息时,我收到消息“您正在编辑提交,同时在'3ac74cb'”上重新设置分支'master'。此消息后是一个文件列表,然后是另一行建议作为该做什么。不幸的是,所有这些现在都已经移出终端缓冲区,因此我无法追踪到该消息是什么,但我基本上遵循了这些消息。

其中一条消息也表明我做了一次拉 - 这是因为我对BitBucket中编辑的文本文件进行了更改。所以我也做了拉。

我已经基本上做了拉,然后再次提交,然后推。这些似乎都没有工作,所以我做了更多的Google搜索来摆脱rebase的信息。根据我的答案,我发现我做了一个'git rebase -abort'。

之后,我试图添加的两个脚本消失了。

我可以从某处取回我的文件,还是只是删除了它们?我怎样才能避免这种情况再次发生,因为我不能失去这样的工作。使用git的重点是不要失去工作。

如果您需要任何进一步的信息来尝试和理解这混乱请只问。我真的很感激任何帮助。

+0

第一步,将远程仓库(位于bitbucket上的仓库)复制到新位置并获取已推送的内容的副本。我相信你采取的步骤并没有删除某些东西,但我会让更多的经验来帮助你。 – Dror

回答

2

当您在工作目录中创建新文件时,您听起来像是在rebase操作的中间。不幸的是,使用git rebase --abort会在开始rebase操作时将HEAD重置回原来的位置。如果git status未显示任何未跟踪的文件,那么恐怕您的文件可能已丢失。

git rebase在正确使用时是一个非常有用的命令,但在误用时也会造成很多麻烦。

为了将来的参考,您可以使用git commit -m <message> --amend更改最近提交的提交消息。这应该可以防止未来出于同样的原因陷入麻烦。

我希望这会有所帮助。

+0

非常感谢您的回复。我已阅读关于rebase的文档,而我并不聪明。我不知道它的目的是什么。为什么它会删除文件?这听起来不是一件非常明智的事情,尤其是没有警告。它会警告你关于其他事情的死亡。 – jss

+0

'rebase'允许您编辑提交历史记录。不需要的提交可以被删除,提交可以被组合并且消息被改变。 当你放弃rebase时,git会尽全力让你回到你开始的时候。 一个好习惯是在任何操作之前使用'git status'。它会提前知道您的合并,重新绑定或任何文件是否有您不期待的更改。 对不起,你有一个糟糕的经历,但我敦促你坚持使用Git,它确实是一个伟大的工具。 – anierzad

+0

非常感谢。你一直很有帮助:-)我脾气暴躁,但我会给它另一个去... – jss

相关问题