假設我在本地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