http://blog.chhsu.org/2010/05/git-git-svn.html
以幫你備份。簡單來說,如果你正在寫論文,請好好學習一下 git 的用法,它對你備份論文與實驗是很有幫助的。
下面說明如何透過 git-svn 與 svn server 溝通並取得 source code
安裝 git-core git-svn
# sudo apt-get install git-core git-svn取得 svn source code
# git svn clone http://url/svn/trunk/ test完全可以離線作業的 log
# git log想 用 svn format來看,沒問題
# git svn log # git svn log -v想知道source code從那邊下來的
# git svn info
開個自己工作用的 local branch,並追蹤 remotes/origin/git-svn 的變化
# git checkout -b test-trunk --track git-svn確 認工作的 branch
# git branch -a master * test-trunk remotes/git-svn切換到遠端的 branch (其實都在本機端)
# git checkout git-svn切換到 local branch
# git checkout test-trunk Previous HEAD position was cf9b8a4... create test.c form svn. Switched to branch 'test-trunk' Your branch is behind 'git-svn' by 1 commit, and can be fast-forwarded.取得遠端更新 (svn update),順便 merge code 進 local branch
# git pull From . * remote branch git-svn -> FETCH_HEAD Updating 99c1a6f..cf9b8a4 Fast-forward 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.c也可先取得遠端更新,但是不merge code 到自己的 local branch,不過實際狀況其實是更新到你的電腦中的 remotes/git-svn branch
# git svn fetch Note: checking out 'git-svn'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at cf9b8a4... create test.c form svn.
與上面的有同樣功能,但是差別在於,會直接將你現在的工作的 branch 直接 merge 成 svn 上面的 code。
# git svn rebase如果你對於 merge code 有恐懼,建議流程如下,
# git svn fetch # git checkout git-svn看看 code 的狀況,或只需要merge哪部份
# git checkout work-trunk如果在開branch 有加上 --track 的選項,就可以直接下 pull
# git pull如果沒有,請下
# git pull origin git-svn已經取得 svn server 上的 source code,要如何 commit code 到 svn?
請確認你已經將修改的檔案 commit 到 local branch,然後再透過下面指令
# git svn dcommit如果已經在 local branch commit 了五次 code , git svn dcommit 會一次送出所有 commit。
整理的流程如下
git svn clone URL LOCAL # 取得程式碼 git checkout -b BRANCH # 開個自己用的branch # 修改你的程式碼或文件 git add MODIFY-FILE # 將修改的程式碼加入要 commit 的範圍 git status # 確認你要 commit 的東西是否正確 git commit # 送出 commit git log # 看一下 log 是否程式碼已經成功 commit git svn rebase # 將同步遠端伺服器程式碼 # 如果有衝突的話,請修正 git svn dcommit # 將程式碼送出到 svn server git svn log # 確認一下 svn server 程式碼是否正確。
參考連結: