Git 是非常好用的程式碼管理工具, 但是 Subversion 應該才是使用率最高的 VCS
Git 提供了非常好用的功能讓使用者可以在已經用 Subversion 管理的專案中使用 Git
也就是 git svn command
git svn 就是在 local 端使用 git 作為 client 並將 change 提交到 svn repo
可以在 local 享有 git 的功能
但是因為 remote 是 svn, 所以一些跟 remote git 相關的功能無法使用
從 svn 建立 git repository
必須先建立一個可以用 git 提交的 local repo
可以用 git svn clone 從 svn 上抓取檔案下來
git svn clone svn-repo-url -T trunk -b branches -t tag
如果沒有現存的 svn repo 的話, 可以先建立一個空的 svn repo 再做clone
不過建立空的 svn repo 時最好先在裡面放一個檔案
否則用 git clone 下來之後可能會發生無法 push commit 到 svn 的情況
假如是要 clone svn 下面一個 subdirectory 的話
可能會發現檔案沒抓下來, clone 完的 repo 是空的
這時不要加上 -T trunk... 參數
就可以成功 clone
加入多個 svn remote repository
要從多個 svn repo sync code 的話
可以用 git svn 新增 remote svn repo
git config --add svn-remote.newbranch.url https://svn/path_to_newbranch/
git config --add svn-remote.newbranch.fetch :refs/remotes/newbranch
然後可以從新的 svn repo 抓取
git svn fetch newbranch [-r<rev>]
抓取完建立 local branch
git checkout -b local-newbranch newbranch
其他
有時候用 git merge conflict 的時候會發現檔案一樣只是 new line 字元不一樣
一個用 \r\n 一個用 \n
可以在 merge 的時候讓 git 忽略換行字元
git merge master -s recursive -Xignore-space-at-eol
如果是 binary file conflict 的時候
可以選擇是要使用哪個版本的 binary file
git checkout --ours file-path
git checkout --theirs file-path
Rerefence
Git 與其他系統 - Git 與 Subversion
沒有留言:
張貼留言