大家一定或多或少感受到 GIT 愈來愈多人採用,~~為了不輸別人(咦?)~~應該是為了體會 GIT 的過人之處,最好的方式就是開始使用它,但公司的版控豈是說換就換的。本文就是介紹該如何在版控 server 仍使用 SVN 的前提下,開發人員在開發環境改用 GIT 管理。
一. 從 SVN 取得 source code
將 source code 從 SVN 取出,並改由 GIT 管理
二. 建立 feature branch
每次修改前,都建立分支
三. 修改 --> commit
每次修改後,就留下版本紀錄
四. 確定完成 --> merge 到本機 git-svn repository
確認版本後,就將 feature branch merge 回一開始從 SVN 取回的 master branch 中
五. 儲存到 SVN
dcommit(push) 到 svn
六. 刪除 feature branch
將 feature branch 刪除,每次修改都建立 branch
git svn clone {svn_repository_url} {資料夾名稱}
資料夾名稱--> 預設使用專案名稱當作資料夾名稱會建立
專案名稱資料夾,並將 source code 下載至專案名稱資料夾中
資料夾名稱會建立
test資料夾,並將 source code 下載至test
資料夾空白處,按右鍵 -->
Git Clone
2-1. URL
SVN url
2-2. Directory
目標目錄
2-3. From SVN Repository
表示從 SVN 下載,相關下載屬性也在這個區塊設定
檔案數較多或是 Commit 數量較多的專案
使用
-r HEAD, 只取得最新版
git svn clone -r HEAD {svn_repository_url} {資料夾名稱}
如果中間發生斷線,可以試試git svn fetch
無法像指令指定
HEAD,就挑最後一版
建立 feature branch,僅在本機作業,不會影響 SVN
git checkout -b {branchbname}
-b會先建立{branchname}同時並切換過去,效果等同於下列兩句
git branch {branchbname}git checkout {branchbname}
TortoiseGit--> Create Branch
2-1. Name
填入 branch name
2-2. Base On
新分支的來源,預設以目前工作分支,也可以選擇其他分支
2-3. Switch to new branch
建立分支後,直接將工作目錄,切換過去
git commit -a -m 'something'
-a 是將新增的檔案也納入 commit 範圍,等同於 git add .
-m 'something', 是在 commit 時直接給註解Git Commit -> "branchname"...
2-1. Message
commit 的註解
2-2. trick Not Versioned Files
挑選要加入版控的新增檔案
merge 指的是將特定 commit 合併至目前工作目錄分支,所以要留意目前工作目錄的位置git checkout master
git merge branchbname
切換到一開始建立 git repository 的 branch (預設 master)
1-1. git show log
在資料夾按右鍵,選
Git Show Log
1-2. 在 master 上,按右鍵 --> Switch/Checkout to "master"
合併分支(merge)
Merge to "master"...可以直接使用預設即可
將本機 Git 的變更,存進 SVN
git svn rebase
git svn dcommit
TortoiseGit
SVN DCommit...
預設會執行
Git SVN Rebase進行更新
合併多次版本變更,讓 SVN 紀錄相對好閱讀
Rebase
HEAD~3 指最近三個 commit合併 (squash)
p or pick
s or squash
:wq 存檔離開Git SVN Rebase
1-1. 資料夾 --> 右鍵 --> TortoiseGit --> Git Rebase
1-2. 選擇 Squash ALL --> Start Rebase
1-3. Commit --> DONE
Combine to one commit
2-1. git show log
在資料夾按右鍵,選
Git Show Log
2-2. 選擇欲合併的 commit --> 按右鍵 -->Combine to one commit
2-3. 修改訊息 --> commit
featur branch 不需推送到 SVN,feature 完成後就可以刪除
git branch -d {branchname}
branch 管理
2-1. 資料夾右鍵 --> TortoiseGit --> Switch/Checkout..
2-2. 選擇其他 branch
2-3. DELETE