當前,當我運行git svn dcommit
時,git爲我自上次與SVN同步後進行的每個本地提交在SVN中創建一個單獨的提交。有沒有什麼辦法讓dcommit
將我所有最近的本地提交合併爲SVN的一個提交?將本地Git提交到git-svn的一個提交中
回答
git rebase remotes/trunk --interactive
應該把你的菜單,您可以選擇提交或他們都擠進了1承諾,以避免污染你的svn庫。 This與git-svn一起工作是一個非常好的(但很短的)資源。
不,你可以很容易地將所有的提交壓縮在一起。對於下面的例子,我會假設你在master
分支對應於遠程trunk
分支,要嘎吱所有本地提交在一起:
git tag local # create a temporary tag
git reset --hard trunk
git merge --squash local
git commit # write your single commit message here
git svn dcommit
git tag -d local # delete the temporary tag named local
而不是使用臨時標籤你可以也只是使用引用日誌
這完全酷,這完全改變了我的工作流程,非常感謝 – 2009-10-14 21:27:11
這爲我工作(即代替local
使用[email protected]{1}
) - 壓扁多次提交到一個承諾,然後dcommitted到的svn:
http://www.gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
當我使用git-svn並希望一系列git提交顯示爲單個提交時,我將處理主題分支,然後在dcommit
-ing之前執行非快進的merge
。
首先,衍合分支對SVN,並確保本地主達最新:
git svn rebase && git push . remotes/trunk:master
然後切換到主,合併和dcommit:
git checkout master
git merge <branch> --no-ff -m "Message you want in svn"
git svn dcommit
這將現身作爲Subversion中的一個單獨提交,但您仍然可以使用本地歷史記錄來完成該提交。
+--- Merge commit
V
svn trunk *---*---*-------------------*--- --- ---
\ /
topic branch *---*---*---*---*
更簡單的方法可能是(如果你有多次提交堆放在本地系統上):
git reset <hash tag of commit till which u need to combine>
git commit -am "your message" // This will create one clubbed commit of all the commit till the hash tag used.
確保你添加了任何新文件。 「git commit -am」不會自行添加新文件。 – 2011-05-26 06:37:43
另外,使用重置 - 軟件將保留所有階段的更改,以便您不必擔心添加文件或使用-a。 – PeterJCLaw 2012-03-04 12:56:24
,不是爲我工作的。我用merge --no-ff --no-commit
但提交後,我得到了:
svntrunk 54f35e4 [trunk: ahead 336] release 1
dcommitting到trunkwill提交所有336次的提交。
如答案#2:Combine local Git commits into one commit for git-svn中所述的重置,標記和壓扁將起作用,但在下一次「合併」時,您將有一些麻煩讓所有提交再次合併!
獨一無二的是爲我工作:
git checkout -tb svntrunk remotes/trunk
git merge --no-commit --squash master
讓所有提交的主人,失去歷史,面向未來使用相同的命令
〜馬塞爾
- 1. git合併重新提交提交到另一個提交?
- 2. 需要幫助將文件從git移動到git LFS,本地提交15個提交遠程提交
- 3. 本地提交後Git拉
- 4. Git恢復本地提交
- 5. Git - 幻影本地提交
- 6. 是否可以在git中一次一個地提交提交,而不是同時提交所有提交?
- 7. 從Git提交一些更改到一個單獨的提交
- 8. 本地提交到git子模塊
- 9. git - 將一系列提交合併爲一個提交
- 10. Git將多個提交集羣集合成一個提交
- 11. 將Git提交到目錄
- 12. 如何在Git中非交互地重新提交提交
- 13. 刪除本地提交不Git中
- 14. 我如何在git中提交一個未提交的提交日期?
- 15. Git Squash按作者 - 所有作者提交到一個提交
- 16. git是否提交整個提交行?
- 17. git - 回到某個提交
- 18. git:編輯本地提交而不更改其提交ID
- 19. 如何使用GIT將同一項目的兩個不同提交提交到不同的本地文件夾
- 20. GIT un-rollback一個提交
- 21. git的鉤和推動本地提交
- 22. Git - 將未提交的更改推送到以前的提交
- 23. Squash提交到一個提交
- 24. 將git提交轉換爲一個
- 25. 如何在git中提交提交?
- 26. 在git中提交一個提交鉤子
- 27. 意外地回滾到git中的前一個提交
- 28. 恢復到本地提交?
- 29. 將最近一次提交的提交消息更新到本地分支
- 30. Git - 回滾到前一個提交
這似乎合併使用svn像一個非常好的解決方案。我不明白遙控器/後備箱在命令中的作用是什麼,最終的結果是我的所有提交都被壓縮在主控器內。我希望他們只會在發送給SVN時被壓制。壓縮完成後,有必要提交SVN。 – 2009-09-18 16:48:17
@MacRae林::你的所有提交都必須在主控中被壓扁。如果他們不是git,將無法保持git和svn庫同步。當你重新拉取最新的變化svn會有一個提交,但在git中你會有n個提交。 – 2009-09-18 17:18:11
@Jason Punyon:我遇到的問題是,在大師壓制提交之後,再次將主開發人員與我的開發分支合併變得困難。幾乎所有的變化都會導致合併衝突,這是一個巨大的痛苦。這是否讓我的發展分支與被壓扁的主人分開是不可避免的後果? – 2009-10-15 01:06:42