我之前在Linux服务器上保留了一个裸的Git存储库,并在本地Windows笔记本电脑上使用工作副本进行开发(使用TortoiseGit通过ssh同步到服务器)。由于某些原因,服务器版本被删除/丢失,因此我想使用Windows机器上本地工作副本中的最新提交来重新创建服务器上的存储库。
如何以最佳方式从Windows工作副本创建此新的远程裸存储库副本并复制到远程Linux服务器?
我之前在Linux服务器上保留了一个裸的Git存储库,并在本地Windows笔记本电脑上使用工作副本进行开发(使用TortoiseGit通过ssh同步到服务器)。由于某些原因,服务器版本被删除/丢失,因此我想使用Windows机器上本地工作副本中的最新提交来重新创建服务器上的存储库。
如何以最佳方式从Windows工作副本创建此新的远程裸存储库副本并复制到远程Linux服务器?
您可以使用以下命令重新创建 Linux 服务器存储库:
mkdir -p myrepo.git
cd myrepo.git
git init --bare
在本地副本上,假设远程URL相同,则执行以下操作:
git push origin <branch refspec>
git push origin master
git remote set-url origin <new-url>
只需在服务器上创建仓库,然后将其作为远程仓库添加到您的本地仓库中(如果不是以前的相同位置),并将更改推送到它。
:
Create a bare repository on remote.
I guess the answer provided by ad22 is good enough for you:
mkdir -p myrepo.git
cd myrepo.git
git init --bare
Otherwise, you need to find out how to create a bare repository on server.
Copy or Memo the URL of that just created bare repository.
(Of cause, you need to have the right for accessing the URL.)
Add a new remote for your local repository.
Since you already have a local repository,
TortoiseGit
-> Settings
, See:
Push to remote by right clicking in local repository and click Push item.
In Push dialog,
在你的Windows电脑上:
git clone --bare /path/to/local-working-copy-of-the-repo
.git/config
中创建一些与CR / LF和文件系统问题相关的设置(它们的大小写[不]敏感性,缺少“x”标志)。最好在Linux上创建一个空的裸仓库,然后将其推送到远程。 - PerlDuck
git push origin --all
后跟git push origin --tags
比逐个推送分支和标签更容易。 - PerlDuck