我正在做一个Chef项目,所以我在笔记本电脑上运行了berks cookbook myproject
。然后我运行git init
,git 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命令可以让我这样做。
答案 0 :(得分:1)
我写了一篇文章,概述了整个过程,因为我已经学会并实施了它,请查看完整的详细信息: HOW TO SETUP “PUSH-TO-GIT” DEPLOYMENT WITH SSH
设置服务器
将目录更改为项目根目录
cd public_html/project
设置存储库位置并移至该目录
mkdir -p project-name.git
cd project-name.git
设置一个简单的git实例
git init --bare
设置post-receive挂钩,以便在进行推送时进行部署。
touch hooks/post-receive
//创建挂钩
chmod a+x hooks/post-receive
// make hook exectuable
将代码推送到远程(如github)是一回事,但在这种情况下,当您将提交推送到此远程时,您将需要签出文件以便他们实际部署,我们将在这个钩子里做这件事。
#!/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;
只要对此远程服务器进行推送,就会触发此脚本。这里可能会发生很多事情,但在这个例子中它只是从被推送的分支接收变化(可能是一个分支,可能是--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