我一直想知道git fetch是如何确定哪些对象需要传输的。客户端不能决定它,因为它不知道哪些对象属于分支,而服务器不能决定它,因为它不知道客户机已经拥有哪些对象。
我读到客户端发送它想要获取的分支的当前状态,服务器从提交它仍然丢失的分支派生,但我认为这并不能完全消除不必要的对象传输的可能性。例如,考虑这两次回购:
客户:
b1 b2
| |
v v
A - B - C
服务器:
b2 b1
| |
v v
A - B - C - D
现在,如果客户端获取请求提交后所有新提交的分支b1,那么即使客户端已