我有一个本地Git存储库。我想让它在远程的,启用ssh的服务器上可用。我该怎么做呢?如何从本地创建远程Git存储库?
回答
我想你把远程侧,git init --bare
纯仓库,添加远程侧推/拉跟踪你的本地仓库(git remote add origin URL
),然后在本地你刚才说git push origin master
。现在任何其他存储库都可以从远程存储库中获取pull
。
对于在Windows上创建本地副本并希望在Unix系统上创建对应的远程存储库的人的说明,其中文本文件在类Unix系统上的开发人员获得更多克隆的LF结尾,但CRLF结束在Windows上。
如果您在setting up line-ending translation之前创建了您的Windows存储库,那么您遇到了问题。 Git的默认设置没有翻译,因此您的工作集使用CRLF,但您的存储库(即存储在.git下的数据)已将文件另存为CRLF。
当您推送到远程时,保存的文件将按原样复制,不会发生行结束翻译。 (当文件被提交到存储库时,而不是在存储库被推送时,行结束转换发生)。你最终会在你的类Unix库中得到CRLF,这不是你想要的。
要在远程存储库中获取LF,必须首先确保LF位于本地存储库中,编号为re-normalizing your Windows repository。这对你的Windows工作集没有明显的影响,它仍然有CRLF结束,但是当你推到远程时,远程将正确地获得LF。我不知道是否有一种简单的方法可以告诉你在Windows库中有哪些行结束符 - 我想你可以通过设置core.autocrlf = false然后克隆来测试它(如果repo有LF结尾,克隆也会有LF)。
为了最初设置任何Git服务器,您必须将现有存储库导出到新的裸存储库 - 一个不包含工作目录的存储库。这通常很简单。为了克隆您的存储库以创建新的裸存储库,可以使用--bare
选项运行clone命令。按照惯例,在.git
裸仓库目录结束,就像这样:
$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/
此命令通过本身需要Git仓库,没有工作目录,并单独为它专门创建一个目录。
既然你有一个仓库的副本,你需要做的就是把它放在服务器上并设置你的协议。假设您已经设置了一个名为git.example.com
的服务器,您可以使用SSH访问该服务器,并且您想要将所有Git存储库存储在/opt/git
目录下。您可以复制你的裸库在设置新的仓库:
$ scp -r my_project.git [email protected]:/opt/git
在这一点上,谁也已只读访问同一台服务器到/opt/git
目录SSH访问其他用户可以通过运行克隆你的仓库
$ git clone [email protected]:/opt/git/my_project.git
如果用户SSHS到服务器,并有写权限的目录/opt/git/my_project.git
,他们也将自动具有推送权限。如果使用--shared
选项运行git init命令,Git会自动将组写入权限添加到存储库。
$ ssh [email protected]
$ cd /opt/git/my_project.git
$ git init --bare --shared
这是很容易采取的Git仓库,创建一个纯的版本,并将其放置在服务器上到你和你的合作者有SSH访问。现在您已准备好在同一个项目上进行协作。
'scp'解决方案在实践中比'init -bare'更好地工作。尽管首先在本地克隆,然后复制到服务器,但它仍然感觉有点丑陋,希望git有一个命令可以一次完成。 – leftaroundabout
为此+1了,因为'--shared'为我工作。我不知道会发生什么,如果你使用'git init --shared'而不做一个'--bare' ... – icedwater
在远程不支持的情况下在本地创建一个裸仓库和'scp', git init --bare'(就像我用git 1.5.5,2008那样)。我认为这应该工作,即使遥控器根本没有git。 –
通常情况下,你可以通过只使用init
命令
git init
在你的情况设置了一个混帐回购协议,已经有一个远程可回购。取决于你如何访问您的远程回购(用URL或处理验证一个SSH密钥中的用户名)只使用clone
命令:
git clone [email protected][my.url.com]:[git-repo-name].git
也有其他的方法来克隆回购。这样你就可以调用它,如果你的计算机上有一个ssh密钥设置,它将验证是否拉动你的存储库。如果您想要在其中包含密码和用户名以登录到远程存储库,还有其他URL组合。
这有多讽刺... 今天有人刚刚低估了这个答案,现在我正在努力推动我的文件。看起来我需要一些git锻炼来再次入手! –
我认为问题在于OP想要一个解决方案在ssh服务器上创建远程repo,但是您描述了如何从远程ssh服务器创建本地repo。你没有回答这个问题。 (不是我是下来。) – peterh
您需要在远程服务器上创建一个目录。然后使用“git init”命令将其设置为存储库。这应该为每个新项目(每个新文件夹)完成
假设您已经使用ssh密钥设置和使用git,我编写了一个小型Python脚本,该脚本在从工作目录执行时将设置远程并将该目录初始化为一个git仓库。当然,你将不得不编辑脚本(只有一次),告诉它所有存储库的服务器和根路径。
在这里检查 - https://github.com/skbobade/ocgi
- 1. Git:创建本地和远程存储库,如何使用我推送到远程存储库的文件?
- 2. Mercurial:在远程存储库创建远程存储库的本地副本
- 3. 如何将我的本地Git存储库移动到远程Git存储库
- 4. 在远程服务器上创建本地git存储库副本
- 5. 如何删除本地git存储库中的远程分支?
- 6. 在同一个系统上创建远程和本地git存储库?
- 7. 如何分组远程GIT存储库
- 8. 如何清理远程GIT存储库?
- 9. Git:从存储库中远程提取
- 10. 如何从命令行(Git Bash)删除远程Git存储库?
- 11. 制作远程git存储库的本地副本
- 12. 如何从多个本地非Git版本创建GitHub存储库
- 13. Git不会将本地存储库与远程存储库同步
- 14. 如何干净地获取/复制远程git分支到本地存储库
- 15. 如何从远程Git存储库中取出并覆盖本地存储库中的更改?
- 16. git推送到远程存储库“无法从远程存储库读取”
- 17. 如何从当前现有的本地git存储库中最好地建立一个“中央”git存储库?
- 18. 如何创建从原始存储库中省略某些文件的Git远程存储库?
- 19. 我如何知道Git存储库的远程地址?
- 20. 本地Netbeans设置与远程git存储库
- 21. 1回滚本地和远程git存储库提交
- 22. 远程目录的Git本地存储库
- 23. Git - 本地存储库
- 24. Git在推送时创建远程存储库
- 25. Git:为两个远程存储库创建新分支
- 26. 创建一个远程git存储库只读
- 27. 远程和本地存储库
- 28. 远程工件存储库vs本地
- 29. EGit本地与远程存储库
- 30. 从git-svn克隆的远程存储库更新裸Git存储库
@Nips:是的,对,对不起。你推动个别分支,的确如此! –
如果我正在使用GUI,该怎么办?如何为所有存储库设置服务器,并且同一网络上的每台PC连接到该服务器? – SearchForKnowledge
如果'git push origin master'失败并显示“repository not found”错误,请尝试在远端执行'git update-server-info',在那里执行了'git init --bare' – HongKilDong