Gitリポジトリをリモートで追加しようとすると「致命的:gitリポジトリではありません」を受け取る


439

このチュートリアルに従って、Gitを紹介します。

リポジトリがローカルマシンに追加される部分まで、すべてが正常に機能します。

git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

(USERNAME、NFSNSERVER、およびREPOAMEを正しい名前に置き換えた後)エラーが表示されます。

fatal: Not a git repository (or any of the parent directories): .git

このステップを乗り越えるのを手伝ってくれませんか?


2
git initまた、あなたのサブディレクトリのどれもが、自分の持っていないことを確認し.gitたフォルダ
ジェームズOravec

回答:


908

このリモートが追加されるはずのローカルGitリポジトリを初期化しましたか?

ローカルディレクトリに.gitフォルダはありますか?

お試しくださいgit init


2
私はすでにこの手順を実行していましたが、エンジンヤードをインストールするエンジンヤードアカウントをセットアップした後で、再度実行する必要がありました。
AVProgrammer、2012

3
私の.gitフォルダはなくなっています。でgit init、その後リポジトリフォルダを削除、そして同じgit clone ...。私がする必要があるのはpull
フランシスコ・コラレス・モラレス

3
@FranciscoCorralesMorales .gitフォルダがなくなった場合は、git initもう一度実行して新しいフォルダを作成できます。ただし、リモートをプルする前に、リモートを再度追加する必要があります。

3
ローカルシステムから変更を送信すると、同じエラーが発生しました。git initを試してみましたが、うまくいきました。ありがとう!
rbashish 2016

6
私は.gitを持っていて、私はすでにgit initを実行しましたが、エラーが発生しますjalal@klein:~/computer_vision/py-faster-rcnn$ git add -A fatal: Not a git repository: caffe-fast-rcnn/../.git/modules/caffe-fast-rcnn
Mona Jalal

85

現在の作業ディレクトリがGitリポジトリ内にないときにGitコマンドを使用しようとすると、このエラーが発生します。これは、「プロジェクトディレクトリにいない限り、Gitはログを表示しない」という私の回答で.git指摘されているように、デフォルトでは、Gitは(プロジェクトルート内にある)リポジトリディレクトリを探すためです。

Linux Kernel Git公式ドキュメントに よると、GIT_DIR[環境変数]は.gitデフォルトで(現在の作業ディレクトリ内の)ディレクトリを検索するように設定されています。

場合はGIT_DIR、環境変数が設定されている、それはデフォルトの代わりに使用するパスを指定する.gitリポジトリのベースのために。

cdリポジトリ/作業コピーに移動する必要があるか、最初にリポジトリを初期化または複製しなかった場合、リポジトリを配置するディレクトリでリポジトリを初期化する必要があります。

git init

またはリポジトリを複製する

git clone <remote-url>
cd <repository>

13
GIT_DIRについて言及した場合は+1。ベアリポジトリのフック内では、GIT_DIRは「。」に設定されます。「.git」の代わりに。
commonpike 2014

の+1 git init。あなたの答えを読んだ後、私クローンを作成したリポジトリでこれを複数回使用しましたが、認識されませんでした。したがって、git repositorygitディレクトリにすべてのファイルが含まれているはずのディレクトリツリーから実行すると安全であるように見えますが、そうではないと主張していますfatal: Not a git repository (or any parent up to mount point
ElderDelp

34

私の問題は、OSの一部の問題で、ローカルリポジトリの任意のコマンドが「致命的:gitリポジトリではない(または任意の親ディレクトリ):.git」で終わり、fsckコマンドが含まれていたことでした。

問題は空のHEADファイルでした。

私が取り組んだ実際のブランチ名を.git / refs / headsで見つけることができ、それからこれを行いました:

echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD

動いた。


2
私のHEADファイルは何らかの理由で破損していたため、復元して問題を修正しなければなりませんでした
Steven

1
あなたは素晴らしい友達です。私の時間を
大幅に

これも私の問題でした。ありがとう
カルロスラファエルラミレス

3
gitリベース中にVisual Studioを開いていたところ、Visual Studioがファイルの変更に気づき、すぐにブルースクリーンで死に至りました。再起動後、.git / HEADはNULLSでいっぱいになり、.git \ refs \ remotes \ origin \ masterなどのどこかから読み取られたフルハッシュ(5621afeffbabed40e3f386676068c45643644b7d)で置き換えると、gitが再び機能し始め、stackoverflow.com / questionsも必要になりました/ 1115854 /…これにより.git / indexを削除するように指示され、gitリセットを実行する前に.git / index.lockを削除する必要がありました。今晴れ
Ivan

1
仕事を取り戻したいという希望はほとんどなくなりました。ちょうど私はあなたのソリューションをコピーして貼り付けます、そしてそれは魔法のようでした。おかげで
ムケシュクマー

17

注:これは、OPの問題である一般的な問題ではなく、このエラーメッセージが表示される可能性のある別の問題には答えます。私はこの答えを書き留めるためだけに新しい質問をする気はありませんでした。代わりにそれを行うべきかどうか教えてください:P

私は、おそらくある種のクラッシュの何らかの破損が原因で、.git存在していてもこのエラーが発生する状況になりました。

smar@aaeru ~/P/Nominatim> git status
fatal: Not a git repository (or any of the parent directories): .git
smar@aaeru ~/P/Nominatim [128]> ls .git
COMMIT_EDITMSG  config*  FETCH_HEAD  HEAD  index  logs/  modules/  objects/  ORIG_HEAD packed-refs

本当に保存する必要があるものがなかったので、ダミーの方法で行っただけでした...

smar@aaeru ~/P/Nominatim [128]> git init
Reinitialized existing Git repository in /home/smar/Projektit/Nominatim/.git/

まだ動作しませんが、たとえばgit logが返されますfatal: bad default revision 'HEAD'。リモコンはなかった私がやったように、しかしそこにgit fetch --all、その後、ちょうどgit reset --hard origin/masterレポが以前いた状態に自分自身を取得します。

いくつかのコミットされていない変更がある場合、あなたがそれらを見ることができることに注意してくださいgit statusgit diffというように。次にgit diff yourfile > patch、リセットを実行する直前。

少なくとも私にとっては、reflog(git reflog)は完全に消えました。したがって、リセットを行い、防止したい変更があった場合、リセット後にそれらを元に戻すことができるかどうかはわかりません。したがって、最終的にこれを試す前にクローンをコピーするだけで、バックアップを失うことができないすべての変更があることを確認してください。


問題が発生しました。そして、@ Smarが述べた方法を試しましたが、同じ結果は「致命的...」です。では、次に何をすべきか?なにか提案を?
カオス、

1
この問題は、Visual Studioを使用している間発生し、git initそしてgit fetch --all問題を修正しました。
モース

7
$ git status
fatal: Not a git repository:

cmdシェル、gitシェル、またはその他の端末に次のように入力するだけです。

$ git init

6

この問題は、ファイルシステムでgitプロジェクトの場所を移動した後に発生しました。いくつかのgitコマンドを実行すると、エラーが発生しました。例:

$ git status
fatal: Not a git repository: /home/rospasta/path_old/gitprojecta/.git/modules/.travis

/home/rospasta/path_old/gitprojecta/.travis/.gitプロジェクトの古い場所の絶対パスが記述されていることがわかりました。新しい場所のこのパスを手動で更新すると、問題が解決しました。

したがって、私の問題はgitの問題かもしれませんが、HTHではありません。


5

それが他の誰かを助ける場合に備えて、私は誤って.git / objects /を削除した後にこのエラーメッセージを受け取りました

fatal:gitリポジトリ(または親ディレクトリ)ではありません:.git

復元すると問題は解決しました。


4

コマンドライン/ CLIでは、現在のディレクトリがリポジトリでない場合にこのエラーが発生します。したがって、最初にCDをレポに入れる必要があります。


4

おそらく遅すぎるが、将来の訪問者を助けるかもしれない別の解決策。最初に古い.gitディレクトリを削除します-

rm .git

次にgitリポジトリを再度初期化します

git init

6
これにより、コミットなどのすべてのgitメタデータが破棄されることに注意してください。データは保持されますが、Gitは「新しく開始」されます-これは良いことではないかもしれません。
ジョセフA.

1
@JosephA .:そうです、それは最適ではありません。あなたが提案できるより良い解決策はありますか?私が手fatalにもかかわらず、エラーが発生し.gitたフォルダが存在しています。
Hassan Baig 2017年

しかし、ねえ、コミットはすでにリモートリポジトリにありませんか?または、HDのローカルでのコミットが本当に必要なものは何ですか?@JosephA。
kevthanewversi 2017年

Cozローカルでコミット情報がなくても、git revert、git resetなどを実行できると思います... @JosephA。
kevthanewversi 2017年

1
これですべてが消去されます!おそらくこれを解決するための最悪の方法。
Richard Lalancette、2018年

4

特定のフォルダに移動していないようです。たとえば、bugsBunnyという名前のプロジェクトで作業していて、それがフォルダーd:/ work:codeに保存されている場合、最初にcd d:/ work / code / bugsBunnyを使用してそのフォルダーに移動し、その後で引き続きgitコマンドを使用できます。


4

私も同じ問題を抱えていました。私は、crontabを使用して、17:55の週の稼働日にすべてのコードをgit repoにバックアップするシェルスクリプトを作成しました。cronのログを見ると、上記の問題が見つかりました。

上記の問題は、gir以外のディレクトリ(つまり、作業コピーではない他のディレクトリ)からgitコマンドを実行しようとした場合にのみ発生します。このアドオンを修正するには-C <git dir>、あなたがそのように実行されているgitのコマンドに git statusなりますgit -C /dir/to/git statusgit add -Aなりますがgit -C /dir/to/git -A


3

私の場合、Tortoise SVNを使用していて、同時にVisual Studio GIT機能も使用するのは間違いでした。これにより、Visual Studioは.gitフォルダー内のHEADファイルをロックしたため、VSもTortoiseもリポジトリにアクセスできず、両方のアプリケーションから「致命的:gitリポジトリではありません...」というエラーが表示されました。

解決:

  1. .gitフォルダー内に移動し、「HEAD.lock」の名前を「HEAD」だけに変更します。
  2. 1つのGIT管理アプリケーションを決定し、他のアプリケーションには触れないでください

3

そのためには、bitbucketコマンドにないコマンドを1つ入力する必要があります。

git initを試してください。


2

私の場合、Windows cmdを使用してgit-コマンド(gitステータスなど)を試してみたところ、同じ問題が発生しました。環境変数にウィンドウhttps://windows.github.com/の gitをインストールした後は、変数「PATH」にgitのクラスパスを追加します。通常、gitはC:/ user / "username" / appdata / local / git / binにインストールされます。これを環境変数のPATHに追加します

そして、cmdのもう1つは、gitリポジトリに移動するか、cdを実行して、ウィンドウ上のクローンがある場所に移動します。通常、これらはgithub cd Document / Github / yourprojectの下のドキュメントに保存され、その後、gitコマンドを使用できます。

ありがとうございました


2

ローカルリポジトリが保存されているソースフォルダーに移動します。例:mineはc:/ GitSourceにあります。フォルダー内で右クリックし、[git bash here]、[git status ...]の順にクリックします。


2

GIT_DIRは設定解除する必要があります: unset GIT_DIR


2

私の場合、ファイル.git / HEADが壊れていました(ドットのみが含まれていました)。だから私はそれを編集し、その内容を次のものに置き換えました:

ref: refs/heads/master

そして、それは再び働き始めました。


1

私にとって、これは私の.git/パスの不正な所有権に関連していました。 rootを所有.git/HEAD.git/indexjenkinsユーザーがジョブを実行できないようにします。


1
これは、コマンドラインでは再現できないようです。所有権設定後.git/HEAD.git/indexにはroot:root、私はまだエラーなしのリモコンを追加することができています。.gitディレクトリ全体の所有権をに変更rootすると、別のエラーが発生しますerror: could not lock config file .git/config: Permission denied
カイルストランド

1

以下のエラーは、Gitsが現在のディレクトリで.gitファイルを見つけられなかったため、エラーメッセージがスローされるようです。

したがって、gitからコードをチェックアウトしたリポジトリディレクトリに移動し、このコマンドを実行します。

  • $ gitチェックアウト

1

私の場合、ある時点から、Windowsのgitがドライブ文字の大文字と小文字を区別するようになりました。

Windowsでgitバイナリをアップグレードした後、以前は機能していたcliコマンドが停止しました。たとえば、スクリプトのパスはD:\ bla \ file.txt でしたが、gitコマンドはd:\ bla \ file.txt のみを受け入れました


1

gitは問題なく動作していましたが、突然、このfatal: Not a git repository (or any of the parent directories): .gitメッセージが表示され始めました。

.gitフォルダーの何が破損しているかわからないので、.gitフォルダーgit clone ** newfolder全体を破損/古いフォルダーにコピーし、gitがエラーメッセージを表示する前に変更を加えていました。

すべてが正常に戻り、gitは私の変更/ステージングされていないファイルも認識しました。


0

.git/ORIG_HEADおよびその他のルート.gitリポジトリファイルを復元する

バックアップから復元した後、このエラーが発生しました。明らかに、.gitディレクトリのルートに含まれているファイルがターゲットに到達しなかったようですが、すべてのサブフォルダーはそうしたので、最初はリポジトリはそのままであると思いました。

ルートファイルを復元して修正しました。


0

GitLabでの認証の問題の後、Jenkins Gitプラグインでこの問題が発生しました。Jenkinsは 'hudson.plugins.git.GitException:[...] stderr:GitLab:探していたプロジェクトが見つからなかったと報告していました。致命的:リモートリポジトリから読み取れませんでした。

ただし、Jenkinsボックス(コマンドライン)から直接「git clone」または「git fetch」を実行した場合、問題なく動作しました。

この問題は、特定のジョブのJenkinsジョブフォルダー内の/ workspaceディレクトリ全体を削除することで解決されました。

rm -Rf $JENKINS_HOME/jobs/myJenkinsJob/workspace/

おそらくローカルの.gitフォルダーが古くなったり破損したりしているのでしょうか?


0

これは、権限が原因である可能性もあります。所有者/グループの権限を確認し、そのデータにアクセスするための適切な権限があることを確認してください。私の場合、所有権がroot:rootに設定されているリポジトリで「git status」を実行すると、このエラーに遭遇しました。rootとして「git status」を実行すると問題が解決しました。または、ユーザー/グループの所有権をroot:rootにしたくない場合は、アクセスできるものにリポジトリを変更します。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.