我喜欢使用Git软件来推送提交,但是我使用的(Gitbox,Github,SourceTree)在向它们添加新回购时都要求本地回购。可以Git软件(例如Gitbox,Github,SourceTree)使用远程回购而不是本地?
事情是,我的回购是在我的开发服务器上,而不是我的本地机器。
所以可以Git的软件使用远程的Git回购作为开发回购,然后推入,为您的主仓库(如Github上或到位桶)?
否则,你似乎无法使用该软件,必须通过SSH使用命令行。
由于
我喜欢使用Git软件来推送提交,但是我使用的(Gitbox,Github,SourceTree)在向它们添加新回购时都要求本地回购。可以Git软件(例如Gitbox,Github,SourceTree)使用远程回购而不是本地?
事情是,我的回购是在我的开发服务器上,而不是我的本地机器。
所以可以Git的软件使用远程的Git回购作为开发回购,然后推入,为您的主仓库(如Github上或到位桶)?
否则,你似乎无法使用该软件,必须通过SSH使用命令行。
由于
一种解决方案,其不依赖于前端,以支持直接操纵的远程回购,是将远程安装作为联网文件系统。如果您只能通过SSH访问远程计算机,则可以通过FUSE(在Linux上)或OSXFUSE(在Mac OS X上)使用SSHFS。或者根据您的偏好和设置,可以使用SMB,NFS,DAV或其他网络文件系统。
另一种方式来做到这一点,那我提出的意见,是网络文件系统从开发计算机导出到您的服务器。我这样做是为了能够将当前的工作副本一次安装到多台机器上,并且即使没有连接到服务器时也仍然保留本地工作副本。
你写:
我很惊讶git的软件无法与远程回购作为工作版本处理。
大多数Git GUI都通过调用git
命令来完成他们的一些工作。为了让他们支持远程操作,核心Git也必须如此。它是用C和shell脚本混合编写的;所有这些都必须重写,以应付远程文件。
一个文本编辑器有一个更容易的工作;它会在您打开时读取一个文件,并且在保存时进行写入,而Git在像commit
这样的单个操作过程中读写许多文件。
一个网络文件系统,将意味着所有工具(Git和其他)将在您的远程文件。与其在每个应用程序中构建一个支持联网文件访问的层,不如在内核(或通过FUSE)中执行它,然后将其视为本地文件系统,为每个应用程序提供免费支持。
如果git软件无法处理我的开发版本的远程回购,那么这听起来像是一个不错的选择,将远程设备添加为网络驱动器。将研究这一点。谢谢。 –
@LaurenceCope我猜大多数Git前端无法远程操作,但我没有大部分经验。其实,我倾向于以相反的方式去做;将本地磁盘上的开发目录导出到我测试的服务器上。我碰巧使用SMB来达到这个目的,因为我已经将其用于其他原因,但任何网络文件系统都应该可以工作。 –
更新:看起来GitHub和Gitbox在远程安装在sshfs驱动器上时无法“查看”.git文件。我没有得到任何状态,或大约全部回购的任何信息:(。我虽然可以看到在Finder中确定的git的文件。 –
我发现一个简单的方法为自己: 在传输(FTP客户端)有一个选项为“山最喜欢的磁盘”。 SourceTree可以像这个'虚拟'磁盘一样按预期工作。
虽然有一个限制:只有在完成代码中的所有更改并准备好提交/推送后,才能挂载磁盘并启动SourceTree,但如果在处理代码时保持SourceTree和ssh磁盘安装,则不起作用。出于某种原因,由Transmit安装的磁盘不会实时更新文件内容,而只能在卸载/装入操作之后进行。
我有Transmit.app我的桌面上已经去试试吧!我给它一个去。谢谢。 –
请记住,Git是DVCS。事实上,你不连接到远程服务器提交的东西是设计。
你想要做的是将本地Git仓库推送到你的集成服务器(实际运行代码的那个)。这就像部署,只有你部署到测试服务器而不是生产。
这通常是通过拥有共享的Git仓库来实现的。这个回购should be bare。除了裸分享回购之外,您还需要一个非共享的Git回购的克隆,它将作为您的Apache文档根。
当共享仓库收到一个提交时,它将使docroot仓库执行git pull
。
这可以通过在共享库上使用post-receive hooks来实现。
docroot repo在特定的分支上被检出(比方说develop
)。所以即使你向其他分支提交东西并推送它们,服务器也不会受到影响。
这允许您设置多个部署库,所以你可以有那些当你把东西给它,将实际更新生产代码的一个相关联的另一个分支prod
。
它还允许您在尚未部署的共享分支上存储未完成/正在进行的工作,以便您知道在笔记本电脑上工作的内容在共享库中是安全的,甚至是虽然它不能被发送到测试服务器,因为它不完整,并会打破测试服务器,使其他人无法工作或什么。
This article详细说明如何设置所有。我以前做过,它运作良好。
问题是,我们使用几个本地机器上的发展,无论其我自己的Mac或笔记本电脑,或者我的开发人员的个人电脑,笔记本电脑或家庭等等。我们不希望为所有这些设置Web服务器以进行本地开发。因此,我们都可以访问remove DEV服务器进行工作。无论何时何地,无需担心我们正在开发的机器设置。我们只需要本地机器上的IDE。我们通过SFTP进行连接并以这种方式工作。在我看来,在我们使用的每台机器上建立我们所有的开发站点正在这个云时代倒退。 –
在我描述的配置中,你不需要本地服务器。你将拥有一个共享服务器,但不是通过SFTP编辑它中的文件,而是提交并推送。共享的Git仓库将负责将文件移动到共享Web服务器。 –
大约一年前,我有这个确切的问题 - 不幸的是我找不到任何一致的,可靠的答案。我搜索了几个星期,认为这是我的搜索条件不成功 - 尝试每一种方式。
[我们的设置是每个开发人员都有自己的开发服务器 - 让他们与机器分开,这意味着可以在任何地方开发网站,开发服务器可以设置为与现场环境完全相同,系统管理员可以让他们升级和备份 - 我完全看到了有一个单独的开发服务器的工作机器的优势,有几个缺点之一是没有git应用程序!]
所有依赖文件挂载或欺骗您的计算机认为一个远程驱动器是本地的,对于一般的文件浏览来说很好,但当连接断断续续时,Git应用程序往往会脱落。其他时候,你需要做的事情一定的方式,正好看到一个git status
我知道这是不是你想听到的,我前一阵子在你的情况,并确切地知道你的感受,的答案,但你可以做的最好的事情是在命令行上使用git。
我讨厌是那些命令行的一个更好堆栈溢出应答者,但在这种情况下,我无法找到任何东西,这是达到标准,每天要由多个开发人员使用一整天。
我当时也反对它,我更喜欢更漂亮,更易于使用的用户界面,但自从学习命令行& git,我从未回头。当我在家里开始自己的项目时,我发现自己在任何应用程序上使用终端,因为我发现他们中有许多令人困惑!
它不仅与命令行的信心有帮助,但由于使用终端,作为应用程序往往隐藏着很多发生的事情我知道的Git已经十倍的提高。
我喜欢在终端中使用git命令,但在控制台检查日志/提交/差异在可视化工具(Git扩展,超越比较) – VitalyB
在本地计算机进行编辑的文件吗?如果文件不在本地计算机上,您将如何进行开发?你可以在远程计算机上运行Git GUI,并使用“ssh -X”将它连接到本地计算机上? – JBCP
我使用编辑器通过SFTP(Coda for Mac)编辑文件。所以我不需要,也不需要我的本地机器上的文件。我使用几台机器开发,因此不想在所有这些设备上设置MySQL/apache/php,并在每个项目上设置一个回购站,这是一场噩梦。所以我有一台开发机器可以访问所有其他机器。我很惊讶git软件无法处理远程回购作为工作版本。我不知道在远程运行git GUI,我怀疑它,我没有x或类似的东西运行,它只是一个centos web服务器。 –