2011-10-19 10 views
1

私はこのgitのことをしようとしていると私は台無しだと思います。だから私は私のコンピュータにFooというプロジェクトを持っています。そのプロジェクトにディレクトリを変更しました。それから、git initを実行してからgit commitを実行してください。それはサーバーにいくつかのリファレンスをプッシュするために失敗したので、私はそれをgoogled、誰かが私は最初にgitをプルする必要があると述べた。さて、私はProject Fooのディレクトリにいる間、私のgithubサーバからgit pull要求を出しました。私のプロジェクトFooディレクトリ内のすべてのファイルが削除され、git pull要求のファイルのみがProject Fooのディレクトリに保存されます。gitで問題が発生しました。プロジェクトファイルを誤って削除しましたか?

ヘルプ、ファイルを再度取得するにはどうすればよいですか?

編集:ここでは、端末の歴史、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 [email protected]:dchhetri/Demo-s.git 
$ git push origin master 
error: src refspec master does not match any. 
error: failed to push some refs to '[email protected]:dchhetri/Demo-s.git' 
$ git remote add origin [email protected]: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 '[email protected]:dchhetri/Demo-s.git' 
$ git pull failed to push some refs to '[email protected]: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 '[email protected]:dchhetri/Demo-s.git' 
fatal: 'failed' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 
$ git pull [email protected]:dchhetri/Demo-s.git 
From github.com:dchhetri/Demo-s 
* branch   HEAD  -> FETCH_HEAD 
$ ls 
AStarDemo.jar 
+0

'git pull'のほかに、他のコマンドを実行しましたか? – ctcherry

+0

これは私がやったことです、git init、そしてREADMEに触れてからgit commitしてからgit remote origin [email protected]:dchhetri/Demo-s.gitを実行し、git push masterを実行しました。サーバー、私はgitを引っ張ったので、私のファイルがなくなった。また、以前はrm -r .gitを実行してFooのプロジェクトディレクトリから.gitフォルダを削除したことを追加したいと思っています。 – dchhetri

+0

私はターミナル履歴を追加しました。これは以前にプルリクエストの前にすべてのファイルがあったことを示しています。 – dchhetri

答えて

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 [email protected]:dchhetri/Demo-s.git 

$ git pull [email protected]:dchhetri/Demo-s.git 
From github.com:dchhetri/Demo-s 
* branch   HEAD  -> FETCH_HEAD 

$ ls 
AStarDemo.jar 

を(最初に、あなたはすでにあなたのGitHubリポジトリにmaster分岐を有していて、あなたがしている状況を説明するためにそのブランチの最新バージョンには、AStarDemo.jarという1つのファイルがあります。以前にプッシュしようとする試みが失敗した理由は、そのブランチにmasterブランチを上書きしようとしているからです。あなたのコミットにそのブランチの履歴が含まれている場合は、-fオプションを追加してプッシュを強制しない限り、gitはそれを許可しません。リンクした長い端末履歴の他のポイントでは、あなたがファウルを押すあなたの試みのいくつかあなたのコミットを作成する前にgit push origin masterを試しているということです。ローカルのmasterはまだ存在しません。

私が引用したコマンドのセクションでは、ディレクトリ内のすべてのファイルをステージングしますgit add .)、それらをコミットすることはありません。その後、gitのバグとして私を襲ったように見えます。コマンドgit pull <URL>はコミットのないリポジトリで実行されると、警告なしにインデックス(ステージング領域)を消してしまうようです。これが私にとってバグのように思える理由は、同様に段階的でコミットされていない変更がありましたが、HEADのコミットを指している場合、git pull <URL>はローカル変更を失うことになります。この場合、あなたのステージファイルを捨てたようです。 (これはgitバージョン1.7.5.4で再現できます。)

ここで何をすべきか - ファイルの別のコピーがどこかにありますか?あなたがしていない場合、それらを元に戻す必要がある場合、それらのファイルをステージングしてから.gitディレクトリを削除していない限り、少しでも作業を行うことができます。 (ここでは他の人がコメントしたように、一般的にあなたのプロジェクト全体の歴史が含まれている.gitディレクトリを、削除してはいけません。)あなたはいくつかのガイダンスを見つけることができるものは、ここでの回答でファイルを上演回復に:

+0

情報ありがとうございます。いいえ、私はバックアップコピーを持っていません。私は今、すべての希望を失ったと思ったので、私は全面的に始める準備ができました。可能であれば、ファイルを元に戻したいと考えています。あなたが今日提供したリンクを試してみます – dchhetri

1

原因ではありません。

Gitは試験で2人の学生と考えてください。彼らは試験の答えのいくつかを知っているし、しばらくして、最近の変更を探して自分の仕事に同じ変更を適用する、それぞれの仕事を覗いています。

githubから「プル」すると、変更がコピーされて適用されます。

あなたのファイルを削除したのは "git stash"です。一時的にあなたの変更を隠し、 "git stash list"でそれらを見るか、 "git stash pop"で戻すことができます。

+0

rm -r .gitを実行しましたが、git stashコマンドを使用しませんでした。私のFooのプロジェクトに影響はありますか?それはしないでください。私のゴミ箱にファイルが見えない? – dchhetri

+0

履歴は.gitフォルダ内に保存されます。それがなくなり、ファイルが消えてしまった場合は、それらを回復することはできません。多分あなたは 'rm -r .'をしたでしょうか? – romaninsh

+0

端末の履歴を確認しましたが、Fooのディレクトリではrm .git -rでしたか? – dchhetri

0

はプルを元に戻すには、次のコマンドをヒット:

git reset --hard HEAD^ 
+0

これを実行しようとするとこのエラーが発生します。致命的です。あいまいな引数 'HEAD ^':未知のリビジョンまたはパスが作業ツリーにありません。 リビジョンからパスを区切るには ' - 'を使います。 – dchhetri

+0

私は端末履歴を追加しました。プルリクエストの前に私が以前に持っていたすべてのファイルがあり、その後は – dchhetri

+0

ではありませんでした。行った。 – ralphtheninja

関連する問題