天天看點

git-svn 在ubuntu deepin(Linux debian系)下的安裝與應用

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的臨時檔案,就寫: