问题描述
这很愚蠢(问题或 git 系统或 git 文档 - 我还没有决定)。
我可以通过 ssh 访问客户端的服务器。有一个网站 domain.com
,还有 git
存储库,它们在 /var/www/html
下。在 git
配置文件中没有遥控器,但它们应该在那里吗? Git 本身已经安装,我可以列出历史记录。
主题是问题:在本地电脑上,我如何从该存储库中推送和拉取?还是我误会了什么?
解决方法
您似乎有一个想要在本地计算机上使用的远程存储库。
克隆
您需要在本地机器上有一份该存储库的副本,否则您将如何使用它,对吗?让我们看看文档:
SSH 协议
Git 自托管时的通用传输协议 已通过 SSH。这是因为已经设置了对服务器的 SSH 访问 在大多数地方 — ,如果不是,则很容易做到。 SSH 也是一个 经过身份验证的网络协议,因为它无处不在,所以 通常易于设置和使用。
要通过 SSH 克隆 Git 存储库,您可以指定一个 ssh://
URL,例如
这个:
$ git clone ssh://[user@]server/project.git
或者你可以使用较短的 SSH 协议的类似 scp 的语法:
$ git clone [user@]server:project.git
在上述两种情况下,如果您 不要指定可选的用户名,Git 假定您是用户 当前登录为。 [source]
在您的情况下,命令应该是 ssh://root@domain.com/var/www/html/.git
1,因为我们能够在评论中敲定。
这将在本地克隆该存储库,并将您的本地克隆设置为指向该存储库作为远程。
伙计,重点是我已经阅读了那个 git doc 和所有相关的东西。命令末尾到处都是 project.git
,我猜是 repo 名称。
现在我看到了混乱。通常,在本地将 git
存储库克隆为工作副本。工作副本有一个根目录,里面有一个隐藏的 .git
文件夹。但是,this is not always the case,因为您可以create 将存储库作为 bare。将裸存储库初始化为 repo.git
是一个约定(据我所知不是强制性的)。裸存储库不包含隐藏的 .git
文件夹,因此,“.git”附加到根文件夹名称。这就是你经常在 git 文档中看到 project.git
的原因。
在 git
配置文件中没有遥控器,但它们应该在那里吗?
在遥控器上,可能没有,不应该有。这不是一般规则(相反),但从您的描述来看应该是最好的答案。在你的本地克隆上,相反,应该有一个。
1) 这告诉我们两件事:如果在那个位置有一个文件夹 .git
,那么你的根文件夹是 html
和它里面的所有内容受版本控制。因此,您的遥控器被设置为工作副本。如果不是这种情况,因为您说您可以在远程运行一些 git 命令,您可能需要check if the remote is bare 并使用这些工具对该存储库的根目录进行故障排除。