如何一起使用 Git 和 SVN

類別: IT

最近總聽到關於Git的事情。在瞭解了一些文件、教程、手冊之後,我覺得Git確實很有用,特別是你有大量時間花費在離線編碼上(我就是這樣)。

這是一份簡單的幫助,告訴你如何使用git來工作在用svn進行版本控制的專案上(例如KDE倉庫的程式碼)。

益處何在?

由於Git是一個分散式版本控制系統(svn是集中式的),你可以在本地工作目錄進行提交、建立分支、合併,無需連線到網際網路。

下次你線上時,可以把你的改動“push” 到中心svn伺服器上。

操作步驟:

你需要:

  1. 安裝 git 和 git-svn
  2. 建立工作目錄:mkdir strigi
  3. 初始化git工作目錄:cd strigi && git-svn init https://svn.kde.org/home/kde/trunk/kdesupport/strigigit-svn init 命令跟著svn倉庫的地址 (這裡我們指向strigi的倉庫)
  4. 找到專案的某個提交 (你可以通過 cia版本控制 去獲得). 警告: 命令git-log 會從這個版本開始顯示專案的版本歷史。
  5. 執行命令git-svn fetch -rREVISION,REVISION 就是剛才獲得的那個版本號。
  6. 更新工作目錄:git-svn rebase,現在你就可以在這個專案中使用git作為版本控制了。

保持工作目錄更新,可以執行:

git-svn rebase

你可以用下面的命令將更改提交到svn伺服器:

git-svn dcommit

通過這種方式,所有的git提交都會“轉換”成相應的svn命令。

解決git-svn rebase的問題

在加入新東西之前,你也許會在同步主開發樹的時候體驗到一些問題。實際上,你在執行git-svn rebase之前還必須提交所有的本地修改(使用git-commit命令)。

有時候這並不合理,因為你的更改也許還沒有準備好提交(還沒有完成、測試或者驗證這寫程式碼)。不過別擔心,git對此也有一個官方的解決方案,只需下面的步驟:

  1. 先把你的改動儲存起來,使用命令:git-stash
  2. 更新工作副本,使用命令:git-svn rebase,這跟平時一樣
  3. 恢復儲存起來的改動,使用命令:git-stash apply
  4. 清除“儲存”,使用命令:git-stash clear。第1步之後,所有未提交的改動在工作副本上都看不到了,因而你可以執行rebase命令,不會有任何問題。

參考git-stash幫助獲得更多資訊。

多謝!

如何一起使用 Git 和 SVN原文請看這裡

推薦文章