假设我在本地git存储库中有多个未提交到svn的提交。例如,这四个提交在master上。使用git-svn,如果我有多个不在svn中的提交,我如何只将选定的提交推送到svn?
A <-- B <-- C <-- D
A是svn中最老的提交,D是最新的提交。
如何使用git svn dcommit
仅将A和B推送到svn,但只保留C和D到我的本地git存储库中?
备用工作流程欢迎。
假设我在本地git存储库中有多个未提交到svn的提交。例如,这四个提交在master上。使用git-svn,如果我有多个不在svn中的提交,我如何只将选定的提交推送到svn?
A <-- B <-- C <-- D
A是svn中最老的提交,D是最新的提交。
如何使用git svn dcommit
仅将A和B推送到svn,但只保留C和D到我的本地git存储库中?
备用工作流程欢迎。
我一直在想这件事,并且对我自己的问题有一个潜在的解决方案。
我可以为我正在处理的每个离散任务创建一个本地分支。如果我完成了一项工作并正在等待代码审查,我可以创建一个新的分支并开始完成一项独立的任务。
当给定的任务完成时,我运行git svn rebase
。然后,我将我的本地分支重新分配给主分支,快速分配给该分支的首部,然后分配给dcommit。
我的问题是提交A和B是一个任务的一部分,而C和D是另一个独立的任务。 C和d属于不同的分支,不应该一直致力于A和B.
对这个问题的答案的顶部...
git-svn dcommiting a single git commit
似乎表明,只有犯了而B并不是真的可能。
dcommit
有一个可选的参数来指定什么治疗如提交期间HEAD,所以这两种工作(其中B
是该特定参考提交,通过名称,如果它具有一个或散列)的:
git svn dcommit B
git svn dcommit HEAD~2
我试过这个,它对我造成了问题。有时它只会提交A,然后掏出。如果A和B得到承诺,它不会正确变更,并且提交C和D将作为更改留在我的工作副本中。 我有git版本1.5.5.6。 – haydenmuhl 2010-08-11 20:10:47
这正是我使用的工作流程;我所有的提交都在不同的分支,如果我将它推到svn – 2010-08-11 20:31:57
哦,我认为1256189正在谈论它不可能提交* just * B;你不能樱桃选择承诺dcommit – 2010-08-11 20:54:51
啊,谢谢。好信息。 – haydenmuhl 2010-08-11 21:23:51