【问题标题】:Transfer a git repository to a web server将 git 存储库传输到 Web 服务器
【发布时间】:2014-07-02 21:05:35
【问题描述】:

我正在尝试将本地 git 存储库传输到 Web 服务器。我按照这里的方法: Git: move existing repository from PC to server, clone from server

首先,我在本地计算机上初始化了一个空存储库,并添加了两个文件并进行了提交。 然后在服务器上我创建了一个文件夹/www/git,并更改为该目录并做了

git init --shared --bare

然后在我运行的本地机器上

git remote add server user@server.com:/www/git

然后我做了

git push server master

输出如下:

Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 2.13 KiB, done.
Total 4 (delta 0), reused 0 (delta 0)
To user@server.com:/www/git
 * [new branch]      master -> master

但是在服务器上,我看不到我在本地机器上添加的两个文件中的任何一个。 如果我在/www/git 中执行ls,我会得到:

HEAD  branches  config  description  hooks  info  objects  refs

但这些都不是我从本地机器推送的文件和目录。

【问题讨论】:

    标签: git


    【解决方案1】:

    这就是bare 存储库的意义所在。它没有工作目录,也没有签出分支。这只是.git 目录。它旨在促进推拉,但处理文件本身。

    如果您想实际使用服务器上的文件,您应该在服务器上的其他地方签出 repo 的非裸副本。然后,您的客户端和服务器可以通过从裸仓库推送/拉取来继续共享代码。

    【讨论】:

    • 谢谢!但实际上我的文件现在在服务器上的什么位置?
    • 为什么我在服务器上需要两个 repos?
    • 正如我所说,您已经创建了一个裸存储库,它没有工作目录。您的文件不在您可以使用它们的任何地方,提交及其关联对象存储在您的裸仓库中。如果您想使用这些文件,您需要克隆裸存储库以创建一个 裸存储库,您将在其中看到您的文件。
    • 建议使用两个存储库,因为您不应该推送到非裸存储库。您只推送到裸仓库,因为您知道有人没有在那里工作。如果您只想使用两个非裸存储库,则两个存储库应该相互拉取,但都不应该推送。
    • 好的,谢谢 meagar.. 这让我很清楚.. 但我想我可以确定没有人在处理服务器上的文件。
    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 2011-02-28
    • 1970-01-01
    • 2019-04-16
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多