麻烦麻烦!我不小心删除了我的项目文件?

时间:2011-10-19 22:05:50

标签: git file github

我正在尝试这个git的东西,我想我搞砸了。所以我的电脑里有一个名为Foo的项目。我将目录更改为该项目。然后做了,git init,然后git commit进入我的github。它说它未能将一些引用推送到服务器,所以我用Google搜索,有人说我需要先做一个git pull。好的,所以当我在Project Foo的目录中时,我从我的github服务器做了一个git pull请求。现在我的项目Foo目录中的所有文件都被删除了,只有来自git pull请求的文件存储在我的Project Foo目录中。

帮助,如何再次检索我的文件?

编辑:这是终端历史记录http://codepad.org/cg9Gi7Ii - 来自该日志的文件消失点的命令是:

$ ls
Models      css     js      utils
README      index.html  styles
$ git init
Initialized empty Git repository in /Users/MacBoss/Documents/workspace/BlackboardCanvas/.git/
$ git add .
$ git remote add origin git@github.com:dchhetri/Demo-s.git
$ git push origin master
error: src refspec master does not match any.
error: failed to push some refs to 'git@github.com:dchhetri/Demo-s.git'
$ git remote add origin git@github.com:dchhetri/Demo-s.git
fatal: remote origin already exists.
$ git push origin master
error: src refspec master does not match any.
error: failed to push some refs to 'git@github.com:dchhetri/Demo-s.git'
$ git pull  failed to push some refs to 'git@github.com:dchhetri/Demo-s.git'
fatal: 'failed' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:dchhetri/Demo-s
 * [new branch]      master     -> origin/master
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "master"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.
$ git pull  failed to push some refs to 'git@github.com:dchhetri/Demo-s.git'
fatal: 'failed' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
$ git pull git@github.com:dchhetri/Demo-s.git
From github.com:dchhetri/Demo-s
 * branch            HEAD       -> FETCH_HEAD
$ ls
AStarDemo.jar

3 个答案:

答案 0 :(得分:3)

我已经引用了您的终端会话的日志部分,下面似乎是相关的。这些是您的文件存在位置和单个AStarDemo.jar替换它们之间的命令。我已经格式化,以便更清楚发生了什么,并删除了失败的命令:

$ ls
Models      css     js      utils
README      index.html  styles

$ git init
Initialized empty Git repository in /Users/[...]/BlackboardCanvas/.git/

$ git add .

$ git remote add origin git@github.com:dchhetri/Demo-s.git

$ git pull git@github.com:dchhetri/Demo-s.git
From github.com:dchhetri/Demo-s
 * branch            HEAD       -> FETCH_HEAD

$ ls
AStarDemo.jar

(首先,为了解释您所处的情况,您的GitHub存储库中已经有一个master分支。该分支的最新版本只有一个文件,名为{{1你之前尝试推送失败的原因是你试图用你的本地分支覆盖那个AStarDemo.jar分支。如果你的提交包含了它的历史,你通常只能将提交推送到分支。除非你通过添加master选项“强制”推送,否则git不允许你这样做。在你链接到的长终端历史记录中的其他点,你的一些尝试的原因推送失败的原因是您在创建任何提交之前尝试-f - 您的本地git push origin master尚不存在。)

在我引用的命令部分中,您将暂存目录中的所有文件(使用master)但不继续提交它们。那么你好像被git中的一个错误所打击 - 命令git add .,当在没有提交的存储库中执行时,似乎在没有警告的情况下消灭你的索引(暂存区域)。这对我来说似乎是一个错误的原因是,如果您同样进行了阶段性和未提交的更改,但是git pull <URL> 确实指向了提交,则HEAD会失败,这会失去你当地的变化。在这种情况下,它似乎扔掉了你的分阶段文件。 (我可以用git版本1.7.5.4重现这个。)

至于现在该做什么 - 你在某个地方有另一份文件副本吗?如果你没有,并且你真的需要让它们恢复,你仍然可以这样做,虽然有一点工作,只要你没有删除你的git pull <URL>目录,因为暂存这些文件。 (正如其他人在这里评论的那样,一般情况下你永远不应该删除.git目录,其中包含你整个项目的历史记录。)你可以在这里找到关于恢复这些分阶段文件的一些指导:

答案 1 :(得分:1)

这应该不是原因。

将Git视为考试中的两名学生。他们知道一些考试答案,偶尔他们会查看其他工作,寻找最近的变化并对自己的工作进行相同的修改。

当您从github“拉”时,它只复制更改并应用它们。

现在可能删除你文件的是“git stash”。这会暂时隐藏您的更改,您可以使用“git stash list”查看它们,或者使用“git stash pop”将它们恢复。

答案 2 :(得分:0)

按以下命令撤消拉动:

git reset --hard HEAD^