Git是一款分布式版本管理工具,由linux的締造者Linus Torvalds設計并實作,具體關于Git的介紹和使用方法可參見其官方站。
這裡要說的是Git是如何做到既可以管理好本地代碼又可以與已有的SVN中心庫進行同步的。
1、安裝
git-svn預設包含在Git的安裝包中,不過在Ubuntu中,git-svn是作為一個獨立的Package需要額外安裝的
sudo apt-get install git-svn
安裝完成後可以直接執行
git svn
指令進行驗證,但是要使用
git-svn
指令時則需要配置PATH環境變量,如下——
環境變量配置:
将
/usr/lib/git-core
配置到你的PATH環境變量中
2、檢出
git-svn clone指令完成這個操作
git-svn clone http://192.168.18.80/Mar/trunk
檢出分步操作:功能與上面步驟相同
建立本地目錄, 比如假定是myproj
$mkdir myproj
$cd myproj
初始化并擷取某個版本
$git svn init http://192.168.18.80/Mar/trunk
$git svn fetch -r xxxxx
擷取某個版本,假如不指定版本,它就會根據svn記錄一級一級擷取
3、更新
git-svn rebase 注意這裡用的是rebase,而不是update。
4、檢視日志
git-svn log
加上-v選項,還可以提供每次commit操作涉及的相關檔案的詳細資訊。
5、送出
将本地代碼同步到Svn伺服器。如果要同步到git伺服器,用git指令
git-svn dcommit
這個指令會将你在本地使用git commit送出到本地代碼庫的所有更改逐一送出到svn庫中。
加上-n選項,則該指令不會真正執行commit到svn的操作,而是會顯示會有哪些本地變動将被commit到svn伺服器。
git-svn dcommit 似乎不能單獨送出某個本地版本的修改,而是一次批量送出所有與svn中心版本庫的差異。
6、解決沖突
例如沖突檔案為foo.c
使用
git-svn rebase
擷取svn伺服器上的最新檔案,導緻沖突,
不過此時svn版本資訊已經添加到本地git庫中(通過git log可以檢視)
打開foo.c,修改代碼,解決沖突;
執行
git rebase --continue
,git提示我:
You must edit all merge conflicts and then
mark them as resolved using git add
執行
git add foo.c
,告知git已完成沖突解決;
再次執行
git rebase --continue
,提示"Applying: git v1",此時"git v1"版本又一次成功加入本地版本庫,你可通過git log檢視;
執行
git-svn dcommit
将foo.c的改動同步到svn中心庫,到此算是完成一次沖突解決。
git比較智能,會提示你解決問題的方法,是以遇到問題時注意看提示文檔。
7、設定忽略檔案
要忽略某些檔案, 需要首先執行如下指令:
git config --global core.excludesfile ~/.gitignore
然後編輯 vi ~/.gitignore.
例如: 需要忽略vim的臨時檔案,就寫: