如何在团队存储库站点中创建远程存储库?

时间:2014-11-07 23:07:27

标签: git

我正在做一个Chef项目,所以我在笔记本电脑上运行了berks cookbook myproject。然后我运行git initgit add -A,然后git commit,以便项目位于我的本地Git存储库中。现在我想将它推送到我的团队使用的中央服务器并添加它。

我跑git remote add baseLauncher git@git.mycompany.com:myteam/baseLauncher.git但没有输出。所以我认为它运作良好。

然后我跑了git push,但我收到了以下错误。

  

致命:没有配置推送目的地。从中指定URL   命令行或使用

配置远程存储库
git remote add <name> <url>
     

然后使用远程名称推送

git push <name>

但这正是我所做的。我尝试搜索git help(无用)并使用google搜索任何内容,但所有搜索返回似乎只用于1)。如何拉远程存储库2)。如何分支3)。设置其他用户将使用的中央存储库。

关于如何做到这一点的任何想法?

我应该注意到我正在尝试使用命令行在远程服务器上创建repo。并且repo必须“在”我的团队的git用户名“下”。

为了清楚起见,这个git服务器是我工作的公司网络上的主机。我刚刚被分配了一个新项目,我希望能够远程在服务器上为这个新项目创建repo。我假设有一个git命令可以让我这样做。

3 个答案:

答案 0 :(得分:1)

我写了一篇文章,概述了整个过程,因为我已经学会并实施了它,请查看完整的详细信息: HOW TO SETUP “PUSH-TO-GIT” DEPLOYMENT WITH SSH

设置服务器

  1. SSH到服务器
  2. 将目录更改为项目根目录

    cd public_html/project

  3. 设置存储库位置并移至该目录

    mkdir -p project-name.git

    cd project-name.git

  4. 设置一个简单的git实例

    git init --bare

  5. 设置post-receive挂钩,以便在进行推送时进行部署。

    touch hooks/post-receive //创建挂钩

    chmod a+x hooks/post-receive // make hook exectuable

  6. 将代码推送到远程(如github)是一回事,但在这种情况下,当您将提交推送到此远程时,您将需要签出文件以便他们实际部署,我们将在这个钩子里做这件事。

    1. 在您最喜欢的编辑器中,修改新创建的&#39; post-receive&#39; 脚本(这可能是与ftp客户端,使用&#39;查看/编辑&#39;, 或者从SSH终端,您可以使用VIM编辑器 舒服)。插入此脚本(根据需要进行修改)
    2. &#13;
      &#13;
      #!/bin/bash
      # 1. Read STDIN (Format: "from_commit to_commit branch_name")
      while read oldrev newrev refname
      do
      branch=$(git rev-parse --symbolic --abbrev-ref $refname)
      if [ "production" == "$branch" ]; then
      `GIT_WORK_TREE=../production git checkout -f production`
      echo "Changes deployed to live site'"
      fi
      if [ "stage" == "$branch" ]; then
      `GIT_WORK_TREE=../stage git checkout -f stage`
      echo "Changes deployed to stage site'"
      fi
      
      if [ "development" == "$branch" ]; then
      `GIT_WORK_TREE=../dev git checkout -f development`
      echo "Changes deployed to development site'"
      fi
      done
      &#13;
      &#13;
      &#13;

      只要对此远程服务器进行推送,就会触发此脚本。这里可能会发生很多事情,但在这个例子中它只是从被推送的分支接收变化(可能是一个分支,可能是--all)。然后,它确定推送了哪个分支,并检查对已定义目录(GIT_WORK_TREE)的更改。分支和目录必须与您的结构匹配,因此确保根据需要进行更改。大多数开发团队最多都有一个用于测试代码的开发环境,一个用于客户审查的稳定版本的暂存环境,以及显然是实时站点的生产环境。

      OR 如果您不喜欢分支管理(为每个目录[生产,登台,开发]设置一个git裸存储库(这就是我的工作)和< strong> 改为使用此脚本

      #!/bin/bash
      
      # 1. Read STDIN (Format: "from_commit to_commit branch_name")
      while read oldrev newrev refname
      do
          `GIT_WORK_TREE=../ git checkout -f master`
          echo "Changes deployed to {environment}"
      done
      

      所以你看到这样的美妙之处在于,当开发团队提交代码时,他们可以轻松git push <remote> <branch>,并且他们的更改将自动部署(推送和检出)到相应的环境。

答案 1 :(得分:0)

Git是分布式版本控制系统或DVCS,这意味着没有任何一个存储库具有比任何其他存储库更重要的。因此,您无法远程创建仓库,并且必须在您(通过SSH等)创建仓库的机器上。

在远程位置创建仓库是一个相对简单的过程。

它涉及使用git init创建回购,就像您在本地计算机上做的那样(除了您将在远程计算机上进行SSH连接),并使用--bare标记确保git对象在存储库中(而不是具有实际代码的实际工作目录,因为它不是开发机器所以你不需要它)

假设没有特殊软件(如Stash或GitHub),您需要通过SSH连接到计算机,并使用git init --bare创建一个裸存储库到您想要的目录中。

所以

$> ssh myuser@git.company.com
$> git init --bare myteam/baseLauncher.git

答案 2 :(得分:0)

当我浏览我们的Git存储库并点击我们的一个存储库链接时,这就出现了。显然它还没有存在,因为我得到了这个作为回应:

  

在命令行上创建一个新存储库

touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@git.corp.company.com:MyWorkgroup/project-cd.git
git push -u origin master
  

从命令行推送现有存储库

git remote add origin git@git.corp.company.com:MyWorkgroup/project-cd.git
git push -u origin master