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 命令都会启动一个新的调用。
不过,代理/隧道就可以了。额外的开销是否值得由您决定。
我有一个奇怪的网络连接,有时不可靠。有时每次我想要一个新的 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 命令都会启动一个新的调用。
不过,代理/隧道就可以了。额外的开销是否值得由您决定。