如何接受 git 推送到任何回购路径,即使它在我的服务器上不存在?
How to accept git push to any repo path even if it doesn't exist on my server?
我正在尝试构建一种简单的方法来创建存储库并将其推送到我自己的服务器。目前,我必须先在我的服务器上创建一个 --bare
存储库,然后才能推送到它。
但是,我希望能够做这样的事情
git remote add origin https://user@mygitserver.com/user/new-repo.git
git push -u origin master
然后在服务器上,如果 new-repo.git
在我的服务器上 user
下不存在,它将创建它并继续正常接收对象。
那么,如何在 git 服务器上实现呢?
如果您使用 gitlab 作为 git 服务器,试试这个:
Push to create a new project
Introduced in GitLab 10.5.
When you create a new repository locally, instead of going to GitLab to manually create a new project and then clone the repo locally, you can directly push it to GitLab to create the new project, all without leaving your terminal. If you have access rights to the associated namespace, GitLab will automatically create a new project under that GitLab namespace with its visibility set to Private by default (you can later change it in the project’s settings).
This can be done by using either SSH or HTTPS:
## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master
## Git push using HTTPS
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
如果您没有使用 gitlab,我建议您试一试。
您可以在 ubuntu 上部署 gitlab-ce
docker 容器,非常简单。
PS:我认为 gitlab 通过破解 ssh 来创建自动回购。所以你可以通过组合来做到这一点:
git clone --bare my_project my_project.git
cp -Rf my_project/.git my_project.git
和 scp -r my_project.git user@git.example.com:/srv/git
。更多可以参考官方doc
我正在尝试构建一种简单的方法来创建存储库并将其推送到我自己的服务器。目前,我必须先在我的服务器上创建一个 --bare
存储库,然后才能推送到它。
但是,我希望能够做这样的事情
git remote add origin https://user@mygitserver.com/user/new-repo.git
git push -u origin master
然后在服务器上,如果 new-repo.git
在我的服务器上 user
下不存在,它将创建它并继续正常接收对象。
那么,如何在 git 服务器上实现呢?
如果您使用 gitlab 作为 git 服务器,试试这个:
Push to create a new project
Introduced in GitLab 10.5.
When you create a new repository locally, instead of going to GitLab to manually create a new project and then clone the repo locally, you can directly push it to GitLab to create the new project, all without leaving your terminal. If you have access rights to the associated namespace, GitLab will automatically create a new project under that GitLab namespace with its visibility set to Private by default (you can later change it in the project’s settings).
This can be done by using either SSH or HTTPS:
## Git push using SSH
git push --set-upstream git@gitlab.example.com:namespace/nonexistent-project.git master
## Git push using HTTPS
git push --set-upstream https://gitlab.example.com/namespace/nonexistent-project.git master
如果您没有使用 gitlab,我建议您试一试。
您可以在 ubuntu 上部署 gitlab-ce
docker 容器,非常简单。
PS:我认为 gitlab 通过破解 ssh 来创建自动回购。所以你可以通过组合来做到这一点:
git clone --bare my_project my_project.git
cp -Rf my_project/.git my_project.git
和 scp -r my_project.git user@git.example.com:/srv/git
。更多可以参考官方doc