我正在尝试通过家庭网络设置推送部署流程。我正在尝试设置一个设置,我可以在服务器上运行一个进程(我将及时放入一个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类似的过程,与那些你不必先从那里克隆一个空的回购之前你可以推动的那些。您可以在设置服务器后将文件推送到那里。这与我正在尝试的相似。
答案 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