我的方案有:我之前做了一個git svn dcommit - 如何修復我的回購?
- 我的本地機器的git回購
- 在GitHub上的遠程
- 一個SVN服務器的局域網
的SVN服務器上仍然是規範的,但保持與GitHub回購相當。其他用戶只使用SVN,而我是唯一的git + SVN用戶(這簡化了事情)。
當我在其他計算機上工作時(例如,我的筆記本電腦,在家,在國外時),我使用git,並使用GitHub回購推/拉我的提交。直到我在辦公室時,我的提交纔會被放入SVN。
當我在辦公室我我會做一個git pull
帶來-在從GitHub任何新的提交,然後做git svn dcommit
,隨後git push -f
回到GitHub上,因此新SVN標註的承諾成爲佳能在GitHub和匹配SVN完美。
但是,今天我的辦公室計算機上有一些懸而未決的提交 - 但我也有非提交的提交 - 我不知道如何解決它。
上午9:00今天上午,在運行任何命令anyhere之前,我的回購協議是這樣的:
o = Normal Git commit, lacking SVN annotation
* = SVN-annotated Git commit
GitHub
*---*---*---*---o---o---o---o---o
A B C D E F G H I
Local computer git repo
*---*---*---*---o---o
A B C D E F
SVN
*---*---*---*
A B C D
說明:我有兩次提交,E
和F
這是在我的本地計算機回購先前從拉GitHub,這些提交還沒有到SVN的dcommit
'd。
今天早上我犯了一個錯誤,我立即在本地計算機上運行git svn dcommit
,沒有先運行git pull
。運行git svn dcommit
造成回購進入這種狀態:
GitHub
*---*---*---*---o---o---o---o---o
A B C D E F G H I
Local computer git repo
*---*---*---*---*---*
A B C D E' F'
SVN
*---*---*---*---*---*
A B C D E' F'
注意E
和F
現在E'
和F'
,因爲他們已經通過git svn
修改爲一個SVN註解提交(所以它有一個不同的提交哈希值,即使它代表相同的代碼庫狀態)。我的原始E
和F
在GitHub中保持不變。
我的電腦確實在後臺git fetch
反正所以我現在有GitHub的我的電腦上提交E
通過I
和GitKraken顯示我怎麼現在有並排側分支是發散後提交D
:
Local computer git repo:
*---*---*---*---*---* (master)
A B C D E' F'
\
\-o---o---o---o---o (remote-master)
E F G H I
我該如何解決這個問題? (因爲Git-SVN註釋的提交實際上是不可變的)。
我想我想要做的就是重新設置父級G
後F'
等忽略E
和F
,然後運行git svn dcommit
,然後做一個git push -f
回到GitHub上。
...問題是,我不知道如何重置G
- 我正在查看類似cherrypick
的命令,但這似乎不是我所追求的,而GitKraken不會讓我rebase
(它不是一個菜單任何在remote-master
分支中的任何選項)。