首页 > 解决方案 > git pull/push 在单个 TCP 连接中

问题描述

我有一个奇怪的网络连接,有时不可靠。有时,每次我想要一个新的 TCP 连接时,我都必须手动按下一个按钮,这可能需要一分钟才能重置。

我偶尔会使用此连接来推送/拉取 git 更改。

大多数时候,这工作得很好。我只是git push通过连接,而我的更改在一个连接中完成。

但是,如果遥控器上有我没有意识到的待定更改,我git push将被拒绝,我将不得不经历一个git pull然后另一个git push,将我的一个连接变成三个。我可以git pull每次都做一个来确保,但这通常意味着不需要额外的连接。

Visual Studio 有一个用于先拉然后再推的术语:“同步”。我知道这不是一个真正的 git 术语,但我想知道是否有一种方法可以设置别名,以便可以在单个 TCP 连接中完成拉取和推送。这将使我的生活更轻松。

我知道我可以使用 SOCKS 保持连接打开,但是每一层网络的成本都很高,因为这不是开始时最快的连接。

标签: gitsshtcpalias

解决方案


Git 本身没有办法做到这一点:它使用 libcurl 打开 http 或 https 连接,并运行ssh以打开 ssh 连接。对于git://协议,它有自己的代码,使用操作系统的套接字层,并创建一个新的套接字。虽然 libcurl 可以进行持久连接,但它是在每次调用的基础上进行的,并且每个 Git 命令都会启动一个新的调用。

尽管如此,代理/隧道仍然可以解决问题。由您决定额外的开销是否值得。


推荐阅读