是否可以在git中逐个推送提交而不是一次推送所有提交?

时间:2017-07-18 00:21:17

标签: git push commit

我使用了一个非常不可靠的连接,当我尝试进行提交时,所以没有一个超过20mb和/或一旦它们达到这样的大小就推动它们,有时它是不可能的(一些资产可能很大 - 我知道使用git作为资产也不是最好的主意)并且在发送所有内容之前我的连接有90%的可能性会失败。

是否可以逐个推送提交,或者您是否可以建议对此案例有用的任何其他提示?

1 个答案:

答案 0 :(得分:4)

是的,这不仅是可能的,而且实际上是非常微不足道的。而不是:

git push remote branch

跑步:

git push remote <commit-hash>:branch

每次提交尝试推送一次,在适当的(最父到最多的)订单。

要自动执行此操作,假设您的遥控器名为origin且您的分支名为branch且您的origin/branch远程跟踪分支是最新的(运行git fetch origin如果不):

for rev in $(git rev-list --reverse origin/branch..branch); do
    git push origin $rev:branch;
done

这实际上是一个单行分为三行,用于StackOverflow发布目的。 (注意:这也假设一个或多或少的线性历史记录;如果没有,则添加--topo-order以保证事情,但是您需要--force并且这里发生了各种不好的想法,因此&# 39;不是要走的路:您可能希望将推送拆分为使用临时分支,或者在合并点聚合它们。)