使用git-svn,如果我有多个提交不在svn中,我怎么只将选定的提交推送到svn?

时间:2010-08-11 20:04:21

标签: git version-control workflow git-svn

假设我的本地git存储库中有多个提交尚未推送到svn。例如,这四个提交在master上。

A <-- B <-- C <-- D

A是最早的提交,不在svn中,D是最新的提交。

如何使用git svn dcommit仅将A和B推送到svn,但仅在我的本地git存储库中保留C和D?

欢迎使用替代工作流程。

2 个答案:

答案 0 :(得分:3)

dcommit接受一个可选参数,指定在提交期间作为HEAD处理的内容,因此其中任何一个都可以工作(其中B是对该特定提交的引用,如果有的话,可以是名称,或者是散列):

git svn dcommit B
git svn dcommit HEAD~2

答案 1 :(得分:1)

我一直在考虑这个问题,并且可以解决我自己的问题。

我可以为我正在处理的每个离散任务创建一个本地分支。如果我完成一项工作并等待代码审查,我可以创建一个新分支并开始处理独立任务。

当给定任务完成后,我运行git svn rebase。然后我将我的本地分支在master上快速转发,快速转发到该分支的负责人,然后dcommit。

我的问题是提交A和B是一项任务的一部分,而C和D是另一项独立任务。 C和D属于不同的分支,永远不应该在A和B之上。

这个问题的答案......

git-svn dcommiting a single git commit

似乎表明只提交A和B是不可能的。