git pull/push 在单个 TCP 连接中

git pull/push in a single TCP connection

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

我偶尔会使用此连接进行 pushing/pulling git 更改。

大多数情况下,这种方法效果很好。我只是 git push 通过连接,我的更改在单个连接中完成。

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

Visual Studio 有一个先拉后推的术语:"Sync"。我知道这不是一个真正的 git 术语,但我想知道是否有一种方法可以设置别名,以便可以在单个 TCP 连接中完成拉取和推送。这会让我的生活更轻松。

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

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

不过,代理/隧道就可以了。额外的开销是否值得由您决定。