git - git pull/push 在单个 TCP 连接中
问题描述
我有一个奇怪的网络连接,有时不可靠。有时,每次我想要一个新的 TCP 连接时,我都必须手动按下一个按钮,这可能需要一分钟才能重置。
我偶尔会使用此连接来推送/拉取 git 更改。
大多数时候,这工作得很好。我只是git push
通过连接,而我的更改在一个连接中完成。
但是,如果遥控器上有我没有意识到的待定更改,我git push
将被拒绝,我将不得不经历一个git pull
然后另一个git push
,将我的一个连接变成三个。我可以git pull
每次都做一个来确保,但这通常意味着不需要额外的连接。
Visual Studio 有一个用于先拉然后再推的术语:“同步”。我知道这不是一个真正的 git 术语,但我想知道是否有一种方法可以设置别名,以便可以在单个 TCP 连接中完成拉取和推送。这将使我的生活更轻松。
我知道我可以使用 SOCKS 保持连接打开,但是每一层网络的成本都很高,因为这不是开始时最快的连接。
解决方案
Git 本身没有办法做到这一点:它使用 libcurl 打开 http 或 https 连接,并运行ssh
以打开 ssh 连接。对于git://
协议,它有自己的代码,使用操作系统的套接字层,并创建一个新的套接字。虽然 libcurl 可以进行持久连接,但它是在每次调用的基础上进行的,并且每个 Git 命令都会启动一个新的调用。
尽管如此,代理/隧道仍然可以解决问题。由您决定额外的开销是否值得。