簡體   English   中英

如何使用本地Git存儲庫跟蹤遠程公共Subversion存儲庫?

[英]How do I track a remote public Subversion repository with a local Git repository?

我一直在嘗試通過閱讀git-svn手冊頁來弄清楚這一點,但是在理解如何實現它方面遇到了麻煩。

我想做的是:

  1. 檢出公共Subversion干線
  2. 創建一個本地git倉庫來跟蹤
  3. 創建一個“供應商”分支,該分支我將不提交,僅用於從Subversion存儲庫中提取更改
  4. 為我希望使用的補丁創建git分支
  5. 將更新拉到“供應商”分支並合並到我的分支中。
  6. 使用git-format-patch提交補丁

我該如何實現?

git-svn的建議工作流程:

  1. 使用上面提到的git-svn拉。
  2. 默認情況下,您將是master 不要在此分支上直接工作。
  3. 在功能分支中進行所有開發(使用master的git checkout -b <feature> )。
  4. 將更改提交到功能分支。
  5. 在功能分支中執行git rebase master 5A。 如果您想在此時獲取svn更新,請切換至master並執行git svn rebase 然后切換回功能分支,執行git rebase master
  6. 切換到master分支並執行git merge <feature>
  7. 檢查合並是否順利,然后執行git svn dcommit將更改推送到svn。

請記住,一旦執行git svn dcommit所有更改將對其他人可見。 因此,絕對要確保在執行git svn dcommit之前,您已正確完成操作。

您要使用git-svn。 我不確定可用教程的狀態如何,但是這里有一些入門知識。

創建本地git倉庫。

如何git-svn從Subversion倉庫克隆最近的n個修訂?

要從svn獲取新修訂版,請使用git svn fetch 這將獲取新修訂並將其放在遠程分支上。 您可以在自己的分支上進行任何更改,然后使用git svn dcommit提交。

但是,我會小心使用git merge命令。 當使用git-svn時,我總是建議使用rebase,並使您的歷史記錄嚴格地線性化。 svn不能很好地跟蹤git分支。 如果您在git中有分支的歷史記錄,並嘗試將其推送到svn,則svn將只能代表該歷史記錄的一半。 您不會丟失任何代碼,但是會丟失提交的粒度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM