如何从本地创build一个远程Git仓库?
我有一个本地的Git仓库。 我想让它在远程的,启用SSH的服务器上可用。 我该怎么做呢?
我认为你在远程端做了一个裸仓库, git init --bare
,把远端作为本地仓库的推/拉跟踪器( git remote add origin URL
),然后在本地你只要说git push origin master
。 现在任何其他仓库都可以从远程仓库中取出。
为了最初设置任何Git服务器,您必须将现有的存储库导出到新的裸存储库 – 一个不包含工作目录的存储库。 这通常是直接做的。 为了克隆您的存储库以创build一个新的裸存储库,可以使用--bare
选项运行clone命令。 按照惯例,裸仓库目录以.git
结尾,如下所示:
$ git clone --bare my_project my_project.git Initialized empty Git repository in /opt/projects/my_project.git/
这个命令本身带有Git仓库,没有工作目录,并且专门为它创build一个目录。
现在你已经有了一个仓库的副本,你只需要把它放在一个服务器上,然后build立你的协议。 假设您已经设置了一个名为git.example.com
的服务器,您可以使用SSH访问该服务器,并且希望将所有Git存储库存储在/opt/git
目录下。 您可以通过复制您的裸仓库来设置您的新仓库:
$ scp -r my_project.git user@git.example.com:/opt/git
此时,具有对同一服务器的SSH访问权限的其他用户可以读取/opt/git
目录,从而可以通过运行克隆存储库
$ git clone user@git.example.com:/opt/git/my_project.git
如果用户通过SSHlogin到服务器,并具有对/opt/git/my_project.git
目录的写入权限,则它们也将自动具有推送访问权限。 如果使用--shared
选项运行git init命令,Git会自动将组写入权限添加到存储库。
$ ssh user@git.example.com $ cd /opt/git/my_project.git $ git init --bare --shared
拿一个Git仓库,创build一个纯粹的版本,并把它放在你和你的协作者可以通过SSH访问的服务器上是很容易的。 现在您已经准备好在同一个项目上进行协作。
对于在Windows上创build本地副本并希望在Unix系统上创build对应的远程存储库的人员的说明,其中文本文件在类Unix系统上的开发人员的进一步克隆上获得LF结尾,而在Windows上获得CRLF结尾。
如果您在设置行结束翻译之前创build了Windows存储库,那么您遇到了问题。 Git的默认设置是没有翻译,所以你的工作集使用CRLF,但是你的仓库(即存储在.git下的数据)也将文件保存为CRLF。
当您推送到远程时,保存的文件按原样复制,不会发生行结束翻译。 (将文件提交到存储库时发生行结束转换,而不是在存储库被推时)。 你最终在你的类Unix库中得到CRLF,这不是你想要的。
要在远程存储库中获得LF,必须首先通过重新规范化Windows存储库来确保LF位于本地存储库中 。 这对您的Windows工作集没有任何明显的影响,但仍然有CRLF结束,但是当您推送到远程时,远程将正确地获得LF。
我不知道是否有一个简单的方法来告诉你的Windows库中有什么行结尾 – 我想你可以通过设置core.autocrlf = false然后克隆来testing它(如果repo有LF结尾,那么clone将会有LF也是)。
您需要在远程服务器上创build一个目录。 然后使用“git init”命令将其设置为存储库。 这应该为每个新项目(每个新文件夹)完成,
假设你已经使用SSH密钥设置并使用了git,我写了一个小的Python脚本,当它从一个工作目录执行时,将会build立一个远程目录并将其初始化为一个git仓库。 当然,你将不得不编辑脚本(只有一次),告诉它所有的存储库的服务器和根path。
通常你可以通过使用init
命令来设置一个git repo
git init
在你的情况下,已经有一个远程可用的回购。 取决于您如何访问您的远程回购(使用url内的用户名或处理validation的ssh密钥),请使用clone
命令:
git clone git@[my.url.com]:[git-repo-name].git
还有其他方法克隆回购。 这样你就可以调用它,如果你的机器上有一个ssh密钥设置,它会validation你的存储库。 如果你想包含你的密码和用户名login到远程仓库,还有其他的组合。