【问题标题】:How do I add a remote Git repository to an Ubuntu Server?如何将远程 Git 存储库添加到 Ubuntu 服务器?
【发布时间】:2011-07-05 09:59:11
【问题描述】:

我在我的桌面计算机 (Windows 7) 上创建了一个 Git 存储库:

git init
git add <all my files>
git commit -m "added my files"

现在我在局域网的一台机器上安装了新的 Ubuntu Server 10.10 并安装了 OpenSSH。我的主目录是/home/jonas,我创建了一个目录~/code/ 来包含我的项目。我可以使用 Putty 从 Windows 7 登录 Ubuntu Server。

我用sudo apt-get install git在服务器上安装了Git

添加远程仓库

现在我想将我桌面上的 Git 存储库添加到服务器。我尝试按照 Pragmatic Version Control Using Git 中的说明进行操作。

我从我的桌面运行这些命令:

git remote add origin jonas@192.168.1.10/home/jonas/code/myproject.git
git push origin master

但我收到此错误消息:

fatal: 'jonas@192.168.1.180/home/jonas/code/myproject.git' does not appear to be
 a git repository
fatal: The remote end hung up unexpectedly

有什么问题?如何创建远程存储库?


正如 PerfectlyNormal 建议的那样,我在地址中添加了 :。现在效果更好了,我不得不在服务器上输入我的密码,但随后我收到了类似的错误消息:

fatal: '/home/jonas/code/myproject.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我必须先在服务器上初始化一个 Git 存储库,然后才能git push 访问它吗?

【问题讨论】:

    标签: git ssh repository git-remote ubuntu-server


    【解决方案1】:

    我注意到的第一件事是您缺少一个“:”。应该是git remote add origin jonas@192.168.1.10:/home/jonas/code/myproject.git

    【讨论】:

      【解决方案2】:

      你需要一个冒号:

      git remote add origin jonas@192.168.1.10/home/jonas/code/myproject.git
      

      应该是:

      git remote add origin jonas@192.168.1.10:/home/jonas/code/myproject.git
      

      【讨论】:

        【解决方案3】:

        您是否在远程服务器上设置了存储库?你需要运行

        mkdir -p /home/jonas/code/myproject.git
        cd /home/jonas/code/myproject.git
        git init --bare
        

        在服务器上进行设置。我建议看看如何在免费的ProGit book 中设置一个 git 服务器。

        【讨论】:

        • 谢谢,这似乎有效。但是我怎样才能在服务器上签出项目呢?如果我这样做git status,那么我会收到一条消息,说我必须在“工作树”上
        • 你不能。远程仓库必须是裸仓库,不能用于工作。有关更多信息,请参阅this answer。如果您也希望能够在服务器上的 repo 上工作,您还需要在服务器上的另一个目录中检出存储库,并像在另一台计算机上一样使用它(即,您必须拉和推像往常一样)。
        • @andrew-marshall 这是真的吗?他不能在服务器上使用非裸仓库然后推送到working-dir/.git 吗?显然,这不是典型的设置,但不可能吗?
        • 这是可能的,但如果您推送到远程计算机上已签出的远程存储库上的分支,则会导致意外结果。事实上,我认为最新版本的 git(可能是 1.7+?)甚至不会允许您这样做。
        • 默认情况下禁用推送到非裸仓库中的签出分支。您可以更改您创建的每个非裸仓库中的设置,但这是有充分理由的默认设置,除非您确切知道自己在做什么,否则您可能甚至不应该尝试它。
        【解决方案4】:
        git remote add origin jonas@192.168.1.10/home/jonas/code/myproject.git
        

        使用 SSH 时,远程存储库地址可以用两种方式表示。一种使用绝对路径,一种使用来自用户主目录的相对路径。你把它们弄混了。

        更正后的命令将是以下命令之一。

        git remote add origin jonas@192.168.1.10:code/myproject.git
        git remote add origin ssh://jonas@192.168.1.10/home/jonas/code/myproject.git
        

        【讨论】:

        • 在 Mac 上,jonas@192.168.1.10:code/myproject.git 格式有效!
        【解决方案5】:

        我通常在本地创建一个裸存储库,然后在设置远程存储库时将该存储库 scp 到服务器。

        例如,

        cd c:\gits
        git clone --bare c:\path\to\local\repository\some_project
        

        创建 some_project.git。

        那么,

        scp -r some_project.git login@some.server:/path/to/remote/gits/.
        

        输入您的密码,或者您可能已经有公钥/私钥访问权限。

        【讨论】:

        • 这会在远程服务器上创建一个新的存储库,而不是“在那里”。对我来说很好。
        【解决方案6】:

        看看the handy script git-create.bashEike Kettner 。给它你首选的远程地址(jonas@192.168.1.10:code/myproject.git),它会自动 SSH 来创建目录并为你初始化一个空的--bare 存储库。您需要做的就是添加git remotegit push

        git-create.bash: 通过 ssh 创建新的空远程 git 仓库

        用法:

        git-create.bash 'jonas@192.168.1.10:code/myproject.git'
        git remote add origin 'jonas@192.168.1.10:code/myproject.git'
        git push -u origin master
        

        【讨论】:

          【解决方案7】:

          连接您的本地存储库。到 Git 远程服务器 Ubuntu

          在远程服务器中创建一个用户并使用ssh-keygen分配ssh访问权限 在您的本地服务器中并将其 .pub 文件粘贴到远程的 ssh 服务器。

          远程服务器上要做的事情

          服务器:XX.XXX.1XX.XX

          Putty 命令行内部

          1. 转到您的根目录中的位置:cd ~/srv/git srv

          2. 创建一个文件夹:mkdir your_file_name 后跟 cd 在您的文件中在您的 git 文件夹中

          3. 在那里初始化 git:git init --bare

               Done
            

          在本地机器上做的事情

          1. 创建您的存储库..

          2. 初始化 Git:git init

          3. 创建远程连接:git remote add origin git@xx.xxx.xxx.xxx:/srv/git/your_file_name

          4. git 推送。

                Done
            

          如果您遇到任何问题,请参考:https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-16
            • 2013-06-24
            • 1970-01-01
            相关资源
            最近更新 更多