同步本地文件到远程git仓库

同步本地文件到远程git仓库

我的 git 存储库位于公司服务器上的 Linux 上。我ssh进入我的 Linux 机器并在那里编辑文件。

问题

在我与服务器建立良好连接之前,此方法非常有用。如果连接速度慢甚至没有连接,我将无法访问我的工作,也无法完成这项工作。

潜在的解决方案

也许我可以将文件从 Linux 服务器复制到本地计算机磁盘,然后运行一个脚本来侦听本地文件中所做的更改并将其镜像到远程服务器。

  • 我正在使用 Git,任何解决方案也应该涵盖 git 文件。
  • 如果我失去连接,我应该能够继续处理本地文件,并且一旦建立连接,脚本就会将我的更改镜像到远程服务器。
  • 我的机器运行 Mac OSX Lion。

答案1

从问题的措辞方式来看,我并不完全确定,但在我看来,从非分布式版本控制系统(svn、csv 等)迁移到分布式版本控制系统(如 git)时,您可能会遇到一些麻烦。

事实证明,您可以在 Git 中免费获得您想要的功能!只需将您的 git 存储库克隆到您想要使用的计算机 ( git clone <remote-repo>),正常工作(代码、git add、git commit、冲洗和重复),然后在完成并正常工作后推回到远程存储库网络连接 (git push origin master或者如果您不使用默认设置,则调用您的远程/分支的任何名称)。 Git 下载一个满的默认情况下,存储库的副本,包括所有历史记录;所以没有互联网连接应该不重要。当互联网恢复时,您可以继续工作并与远程计算机同步。

如果您正在寻找一种在每次提交时自动推送的方法,请查看git钩子。提交后挂钩可能就是您想要的。只需导航到.git/hooksgit 存储库中的目录并将文件重命名post-commit.samplepost-commit,或者创建它并确保它是可执行的 ( chmod +x post-commit)(如果它不存在)。现在,您放入此脚本中的任何内容都将在提交后立即执行,例如,您似乎想要:

#!/bin/sh
git push origin master

您还可以使用post-receive远程计算机上的钩子在每次收到来自本地存储库的推送时执行某些操作。

编辑:在评论中您说“手动推送不起作用”;但是,git 支持通过 SSH 推送,这可能就是您管理服务器的方式。如果没有,也可以通过FTP推送(不寒而栗)和其他协议,包括 HTTP[S](如果您正确配置服务器)。您可能应该考虑以这种方式使用 git,因为这就是它的设计用途。

答案2

正确的方法是从服务器拉/推。问题是,如何实现自动化?好吧,通过一点工作,您可以将一些东西放在一起,每次更改文件时自动推送到服务器上的单独分支?

相关内容