我正在使用git-svn。我如何獲得我已經提交到git的列表,但自從上一次git svn dcommit
以來還沒有提交到SVN存儲庫?也就是說,如果我執行dcommit,如何驗證即將發送的內容?如何查看已經簽入git,但尚未通過dcommit提交給svn?
11
A
回答
12
的--dry-run
選項git svn dcommit
是找出將是什麼是非常有用的致力於Subversion。尤其是具有性質:
- 它實際上並沒有犯什麼顛覆
- 它會告訴你哪些差異列表將被計算在顛覆創造新修訂
- 它會告訴你在Subversion中哪個分支你會承諾 - 這有時並不明顯,因爲它取自第一個祖先提交中指定的Subversion分支,在其提交消息中使用git-svn-id
一般來說,這是一個好主意之前要做git svn rebase
甚至考慮使用dcommit
,以便您的歷史線性化 - 否則合併提交在Subversion歷史中可能沒有多大意義。 (如果你已經這樣做了,那麼git log
和gitk --all
也基本相同,但我認爲git svn dcommit --dry-run
即使更難解釋也會給你更準確的圖像。)
1
我認爲最簡單的方法就是使用gitk來做到這一點。你會希望--all選項查看所有分支。如果您之前沒有使用過,只需鍵入:
gitk --all
您將看到分支的圖形視圖。當你從SVN更新時,你基本上會做一個rebase(git svn rebase)。這意味着沒有簽入SVN的任何本地提交將在最後一次SVN提交後出現在分支上。基本上看你的遠程SVN中繼和你的主分支之間的提交。
1
我用git log --oneline --graph
:
* aaaaaaa commit message
* bbbbbbb commit message
|\
| * ccccccc commit message
| * ddddddd commit message
| * eeeeeee commit message
|/
* fffffff commit message
|\
...
可以很容易地看到,承諾aaaaaaa
,bbbbbbb
和fffffff
是對當前(主)分支。這些提交要麼已經或將承諾Subversion下次執行git svn dcommit
時。 (提交ccccccc
,ddddddd
,eeeeeee
是在一個單獨的分支,它被合併到主並不會致力於顛覆作爲單獨提交)
0
只看到提交的名單,這是我的魔:
git svn dcommit -n | sed 1d | cut -d" " -f3 | xargs -I{} git log --oneline --no-walk {}
輸出:
c2e1eff changed a thing
a889dbf changed a second thing
18a4653 undid the second thing-- oops
相關問題
- 1. git-svn dcommit從後提交與Kerberos
- 2. git svn dcommit到sourceforge失敗,但它通過svn直接工作
- 3. SVN:如何重新打造了創建但未提交尚未
- 4. 如何撤消git svn dcommit?
- 5. git svn dcommit如何確定在哪裏提交?
- 6. 是否有可能使git svn dcommit導致單個svn提交?
- 7. Git pre-svn-dcommit hook
- 8. git svn dcommit bug id
- 9. 如何在Git中顯示所有已提交但尚未推送的內容?
- 10. 如何跳過提示「您已經購買了該商品但尚未下載」
- 11. 繼續部分git svn dcommit失敗預先提交鉤子
- 12. 在做git-svn dcommit之前壓縮或編輯一些提交?
- 13. Git-Svn:保留提交時間戳後dcommit
- 14. 如何查看尚未推送的提交列表?
- 15. git svn dcommit一個文件
- 16. git-svn rebase和dcommit問題
- 17. git svn status - 顯示未提交給svn的更改
- 18. 避免SVN提交中未經過預先測試的提交
- 19. 我已經推入Git後如何合併提交?
- 20. git svn dcommit與svn用戶名
- 21. 任何方式來默認git svn dcommit失敗,如果代碼已過期?
- 22. 查看未發佈的Git提交給Gerrit
- 23. 我已經導入使用Git SVN GIT中svn庫移動
- 24. 如何使Hudson中的MSBuild指示ASP.NET MVC View尚未提交給SVN?
- 25. onchange在表單尚未提交時提交但尚未正常工作
- 26. 讀取已修改但尚未提交的數據
- 27. 缺少git通過http提交,但通過ssh提供
- 28. 使用Git svn的一個已經簽出SVN倉庫
- 29. Git:如何訪問另一個提交文件,但尚未推送
- 30. git rebase interactive已經推送提交
值得是明確表示,在'ccccccc'引入的變化,'ddddddd'和'eeeeeee'將顛覆結束,因爲爲合併提交的ffff計算的差異假設「ffffffff」的第一個父項爲「bbbbbbbb」,則ffff'將包含返回到「bbbbbbbb」的更改,正如您建議通過說分支「合併爲主」一樣。但是,這些更改不會作爲單獨的修訂版出現,因此結果可能並不理想 - 如果您想將這些歷史記錄提交到Subversion,首先執行「git svn rebase」是最安全的。 – 2011-05-18 05:11:41
@Mark Longair:我的意圖是減輕任何擔心'ccccccc','ddddddd'和'eeeeeee'會出現在Subversion中作爲單獨的提交。根據我的經驗,這些提交通常構成一個功能分支,並不適合作爲單獨的Subversion提交。 – titaniumdecoy 2011-05-18 05:15:37