git error - "错误:src refspec master与any匹配。"

时间:2014-05-30 15:11:53

标签: git

我正在尝试通过家庭网络设置推送部署流程。我正在尝试设置一个设置,我可以在服务器上运行一个进程(我将及时放入一个bash脚本),在那里设置空存储库。然后,从我的开发设备,我将推送到服务器上的repo。

我正在使用以下教程的略微修改版本。该教程似乎假设该项目当前位于服务器上。我想在我的开发环境中创建项目,然后进行服务器设置,然后我可以将项目推送到服务器。

http://danbarber.me/using-git-for-deployment/

1)以下是我在服务器上设置实时回购和裸仓库的过程:

# create our app space and initialise git
mkdir /var/www/myproject && cd /var/www/myproject
git init
touch README.md
git add .
git commit -m "Setup new project"

# create bare repository
mkdir -p /var/git/myproject.git
cd /var/git/myproject.git
git init --bare
cd /var/www/myproject
git push /var/git/myproject.git master # error here too "error: src refspec master does not match any."

# configure /var/www/myproject/.git/config
cd /var/www/myproject/
git remote add hub /var/git/myproject.git

# create hook to make sure that any time anything is pushed to the hub repository it will be pulled into the live repo
# write this to /var/git/myproject.git/hooks/post-update

#!/bin/sh

echo
echo "**** Pulling changes into Live [Hub's post-update hook]"
echo

cd /var/www/myproject || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info
^D

# make sure the file is executable
chmod +x /var/git/myproject.git/hooks/post-update

# create hook to make sure that any ‘in place’ changes we make to the web code is pushed to the hub when committed
# **write this to /var/www/myproject/.git/hooks/post-commit

#!/bin/sh

echo
echo "**** pushing changes to Hub [Live's post-commit hook]"
echo

git push hub
^D

# Again, ensure this file is executable.
chmod +x /var/www/myproject/.git/hooks/post-commit

2)在我的开发设备上,我执行以下操作:

rails new myproject
cd myproject
git init
git remote add origin martyn@192.168.0.100:/var/git/myproject.git
git push origin master

..但我收到以下错误:

error: src refspec master does not match any.
error: failed to push some refs to 'martyn@192.168.0.100:/var/git/myproject.git'

..有谁知道我需要做什么。在本教程之后,它假定应用程序已经存在于服务器上,因此它略有不同,因为它不会创建空的repo。但我不想FTP应用程序文件,从那里克隆它然后在服务器上创建一个repo。我想在开发环境中创建应用程序,在服务器上运行脚本以在那里设置git,然后将应用程序从dev推送到我的服务器。

无论如何这是我第一次尝试这个,我会感激任何指针,或者如果有人对我应该做的事情有更好的建议。感谢

更新:

我添加了touch README.md,以便提交一些内容。另外,我添加了代码来设置一个空的rails项目并创建本地repo。我在服务器上没有错误。但我仍然无法在我的开发设备上做我想做的事情。当我执行以下操作时:

cd /var/www/myproject
git clone martyn@192.168.0.100:/var/git/myproject.git myproject

我可以从服务器克隆回购,然后添加文件等。然后推送。但这不是我想要创建一个新项目的方式。我想首先开始在本地构建应用程序,创建一个本地存储库,然后在我准备提交后不久,设置服务器和PUSH文件。与Heroku或Github类似的过程,与那些你不必先从那里克隆一个空的回购之前你可以推动的那些。您可以在设置服务器后将文件推送到那里。这与我正在尝试的相似。

1 个答案:

答案 0 :(得分:0)

您的本地主分支上没有创建提交。如果您在目录中没有任何文件,则不会进行提交:

# create our app space and initialise git
mkdir /var/www/myproject && cd /var/www/myproject
git init
git add .
git commit -m "Setup new project"
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

注意"没有任何承诺"线。 git log或git show不会显示任何提交。在进行第一次git add之前,请确保在repository目录中创建一些文件。

修改

实际上,从技术上讲,全新的存储库中没有主分支。这正是HEAD指出的:

cat .git/HEAD
ref: refs/heads/master

git show-ref没有显示任何引用。仅在创建第一个提交主分支并且git show-ref显示:

之后
git show-ref
bf07c8469f5e66eff66a0a3e9c652dcc347c1de8 refs/heads/master