0

我现在的连接速度非常慢,我需要将一个新分支推送到我公司的 git 服务器中。使用 SVN,如果我愿意,我可以一次将文件提交/推送到远程 SVN 服务器。过去,当我的连接速度很慢时,我可以一次上传一个文件夹,效果很好。我当然可以在 git 中使用类似的东西。

4

2 回答 2

1

当您执行 git-push(1) 时,手册中说:

通常<src>是您想要推送的分支的名称,但它可以是任意的“SHA-1 表达式”,例如 master~4 或 HEAD(参见 gitrevisions(7))。

因此,您应该能够通过按时间顺序组织单个提交到远程,然后在详细的 refspec 中指定每个提交。例如:

# Get all commits not in remotes/origin/master and
# sort in chronological order.
commits_list=$(
    git log --oneline --reverse refs/remotes/origin/master..HEAD | 
    awk '{print $1}'
)

# Push each commit one-by-one to origin/master.
for commit in $commits_list; do
    git push origin $commit:refs/heads/master
done

我在本地对此进行了测试,它似乎按预期工作。试试看; 如果不出意外,它会让你指向正确的方向。

于 2012-06-24T20:28:45.083 回答
0

如果您的分支由许多小提交组成一个大更改,您可以通过分阶段推送提交来实现这一点。也许从您的代码与公司服务器上的代码不同的点开始创建一个新分支,然后分阶段从您的分支中提取提交范围,并在提取每个范围后推送。

但是推送单独的文件夹/文件 - 我很确定这是不可能的:它违反了 git 的要求,即提交是一个原子实体。

于 2012-06-24T20:06:33.987 回答