大家一定或多或少感受到 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