Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 下 Git 與 SVN 共存協作:git svn 橋接完整實戰指南

編輯:關於 Linux

許多團隊正處於從 SVN 遷移至 Git 的過渡期,或需長期並行使用兩套版控系統。git svn 提供強大的雙向橋接功能,讓 Git 使用者能透明地與 SVN 倉庫互動。本文詳細說明從作者映射、克隆、同步到日常操作的完整流程。

Git SVN 工作流程圖

核心步驟總覽

  1. 建立 SVN 作者 → Git 作者(姓名+Email)映射檔
  2. 使用 git svn clone 取得 SVN 歷史並轉為 Git 倉庫
  3. 日常使用 git svn fetch/rebase/dcommit 雙向同步

1. 產生作者映射檔

# 從 SVN log 擷取所有提交者
svn log --xml | grep "^" | sort -u | \
awk -F'' '{print $2}' | awk -F'' '{print $1}' > user.txt

編輯 user.txt 為以下格式:

schacon = Scott Chacon 
selse = Someo Nelse 

2. 克隆 SVN 專案 (Trunk)

git svn clone https://example.com/path/to/project-x/trunk \
    --authors-file=users.txt project-x
  • --authors-file:指定作者映射檔
  • project-x:本地目錄名稱
  • 遷移專用:加上 --no-metadata 可不保留 SVN 中繼資料;共存模式請勿加此參數。

3. 常用同步指令速查表

指令用途
git svn fetch 從 SVN 抓取最新變更到本地 Git 遠端追蹤分支
git svn rebase 將本地提交變基到最新 SVN 狀態(類似 git pull --rebase)
git svn dcommit 將本地 Git 提交推送回 SVN(每個 Git commit 產生一個 SVN revision)
git svn log 顯示 SVN 風格的提交歷史
git branch -r 檢視 SVN 遠端分支(如 remotes/git-svn)

最佳實踐建議

  • 單向寫入:建議只在 Git 端建立分支開發,透過 dcommit 推回 SVN trunk,避免雙向衝突。
  • 提交粒度:Git 本地可頻繁微提交,推回 SVN 前可用 git rebase -i 整理為邏輯完整的提交。
  • 標籤/分支:若 SVN 有 tags/branches 結構,clone 時加 --stdlayout 或分別指定 -T/-b/-t 參數。

善用 git svn,即可在享受 Git 本地分支、離線提交、重構歷史等優勢的同時,無縫對接既有 SVN 基礎設施。

Copyright © Windows教程網 All Rights Reserved