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