我正在遵循这个教程。一切都很好,直到我在我的本地机器上运行这个(在用它们的实际值替换$VARIABLEs之后):
git remote add nfsn ssh://$USERNAME@$SERVER/home/private/git/$REPONAME.git
我收到以下错误信息:
致命:不是一个git存储库(或任何父目录):.git
我如何通过这一步?
我正在遵循这个教程。一切都很好,直到我在我的本地机器上运行这个(在用它们的实际值替换$VARIABLEs之后):
git remote add nfsn ssh://$USERNAME@$SERVER/home/private/git/$REPONAME.git
我收到以下错误信息:
致命:不是一个git存储库(或任何父目录):.git
我如何通过这一步?
当前回答
我到达这个问题是因为遇到了错误消息
fatal: not a git repository: '~/repos/abc'
因为我担心git版本之间有一些不兼容(幸运的是没有),
我在这里读到的答案没有一个是我的情况的解决方案,我发现其中一些答案是危险和误导性的。
我得到了这个错误,因为我将一个存储库从OpenBSD移动到Linux,但这可能只通过改变shell就会发生,在OpenBSD中,我使用(在.kshrc中使用ksh)来调用git(注意路径中的~/形式):
alias git-abc='git --git-dir=~/repos/abc --work-tree=~/Development/abc'
在OpenBSD和ksh中,它使用该语法来定义别名,而在linux和bash中,在这样完全相同的别名定义中引用的~在别名被调用时不会扩展,我通过删除别名定义中的引号来解决。
alias git-abc=git --git-dir=~/repos/abc --work-tree=~/Development/abc
其他回答
转到本地repo存储的源文件夹,例如我的在c:/GitSource中,右键单击文件夹,在这里单击git bash,然后单击git状态....
我的问题是,对于我的操作系统的一些问题,我的本地存储库上的任何命令都以“fatal: Not a git repository(或任何父目录):.git”结尾,其中包括fsck命令。
问题是空的HEAD文件。
我能够找到我在.git/refs/heads中工作过的实际分支名称,然后我这样做:
echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD
它工作。
当我在文件系统上移动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。
在命令行/CLI中,如果当前目录不是存储库,则会出现此错误。所以,你必须先将CD放入回购。
注意:这并没有解决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日志返回致命:糟糕的默认修订'HEAD'。虽然遥控器在那里,所以我做了git取回——所有,然后只是git重置——硬起源/主,让自己回到回购之前的状态。
注意,如果有一些未提交的更改,你可以通过git status、git diff等查看它们。然后在运行重置之前,git diff你的文件>补丁。
至少对我来说reflog (git reflog)完全消失了。因此,如果你做重置,有一些变化,你想防止,我不确定你可以得到他们重置后再回来。因此,要确保所有不能丢失的更改都已备份,最终只需在尝试此操作之前复制副本即可。