我计划在.git
文件的不同位置初始化一个裸 git 存储库。然后我以某种方式删除了我的/home/<user>/
目录或其他东西。这就是我所做的:
$ cd /var/www/html/
$ mkdir web-test
$ cd ~/
我尝试删除其中的文件夹
$ rm foo.git -r
(放在-r
目录后面是错误的吗?)
$ git init --separate-git-dir /var/www/html/web-test/ --bare
(我意识到我忘记创建一个文件夹来放入文件.git
)
$ ls -a
. .bash_history .bash_profile branches description HEAD info
.. .kshrc refs .viminfo .bash_logout .bashrc config
.git hooks .ipython objects .ssh
$ ls ~/ -a
ls: cannot access /home/<user>/: Not a directory
$ echo $PWD
/home/<user>
$ ls /var/www/html/web-test/ -a
. .bash_history .bash_profile branches description HEAD info
.. .kshrc refs .viminfo .bash_logout .bashrc config
.git hooks .ipython objects .ssh
$ file ~
/home/<user>: ASCII text
有人能告诉我我做了什么吗?
答案1
您的主目录已移至/var/www/html/web-test/
,您可以从那里恢复它而不会丢失数据。
当前目录(大概~
)已被移动到/var/www/html/web-test/
并在其中创建了一个裸git存储库(“refs”和“objects”目录等)。已在 git 知道如何遵循的位置创建了一个文本文件(如人工符号链接):
gitdir: /var/www/html/web-test/
这是记录的行为git init --separate-git-dir
:
--separate-git-dir=<git dir> Instead of initializing the repository as a directory to either $GIT_DIR or ./.git/, create a text file there containing the path to the actual repository. This file acts as filesystem-agnostic Git symbolic link to the repository. If this is reinitialization, the repository will be moved to the specified path.
最后一段是这里最重要的一段。如果您不指定路径,则默认情况下您正在讨论的存储库位于.
.如果它能在你的脚被踢掉之前提供一些提示,那就太好了。
您可以删除文本文件 ( rm ~
) 并将目录移回 ( mv /var/www/html/web-test ~
) ,一切都会好起来的。
之后您可能想删除 git 文件 - 目前您在该目录中有两个 git 存储库,即使这是您想要的, git 可能也不会喜欢。