Tweet |
|
最近加入新的團隊,改成使用 GIT 來 Sync 大家的程式
因為之前是用 SVN ,發現概念雖然類似,但還是有一些不同之處,而且有些專有名詞也不太一樣
所以用這篇文章來記錄一下
何為 GIT
一個免費且開源的分散式版本控管系統,而且效能超好
有興趣的可以再去看它的 Wiki 頁面
GIT 優點
- 分散式資料庫 (其中一個壞掉沒關係,其他地方還有很多備份, 也可本地備份)
- 速度快 (官方網站有比較跟 SVN 的速度差異)
- 使用 Checksum 來保證資料的完整性
- 其他的優點就大致跟一般的版本管理系統大同小異
名詞
- Repository:指我們放置 Code 的地方,簡稱 Repo
- Add:表示將 Code 加到 GIT 的追蹤列表當中
- Stage:跟 Add 的意思一樣,描述 Code 已經進入追蹤列表當中
- Pull:指將 Code 從 Repo 上下拉下來 (或可以說 checkout 下來)
- Commit:將 Code 正式上傳到 Repo 上面,建立一個上傳節點
- revert:指移除不小心加入的檔案
- Master:指主線開發的 Code Base,或預設的 Branch
- Branch:指分線開發的 Code Base (可能測試用,或是還沒完成的 Code)
- Origin:預設的 Remote Repository, 也代表一個 url 的別名
WorkFlow



Staging 的概念


Branch / Merge / Rebase 的概念
Branch 在版本控管系統當中擔任很重要的角色,通常使用 Branch 的時機有:
- 開發新功能
- 修正特定 Bug
當我們在 Branch 當中測試無誤之後,就會再把程式 Merge 回主線去,一般情況在 Code 整合時都是用 Merge
不過,在某些特殊情況時,可以考慮改用 Rebase 指令,讓線圖長得更簡單,如下:
- 小量修改時
- 預期不太會有 conflict 時
GIT 常用指令
git clone path:下載特定位置的資料下來
git status:確認本地資料夾有什麼修改的地方
git add filename:加入要修改的檔案
git add ./-A:將所有有修改的加入
git add -i:用互動的模式來確認要加入的檔案
git commit -m “info”:在本地建立修改記錄,並帶 info 的備註
git push:把修改記錄上傳
git pull:把修改記錄下載回來
git log:列出 repo 記錄
git branch:建立一個 branch
git checkout ‘branch’:switch to ‘branch’
git add -A
git commit -m “blahblah..”
完成 branch
git pull
發現問題,手動調整程式碼
git status
git add -A
git commit
進入 Merge 模式
:wq 確認修改
Merge branch ‘master’
git push
完成
git checkout master (先回到 master)
git pull (更新 master )
git checkout branchName (切換到 branch)
add > commit change
在 github 上面開 pull request
等待回覆後,會自動 merge 回 master
git config —global alias.co checkout:替 checkout 建立 co 的別名
git config —global color.ui true:設定幫 command 上色
git config —global user.name “xxxx”:設定使用者名稱
git config —global user.email “xxxx”:設定使用者 Email
git config —list :查看 GIT 設定內容
git log —author=foxfirejack:搜索特定使用者提交記錄
git branch -m oldName newName:修改 branch 名稱
git stash:保存工作狀態
git stash pop:恢復工作狀態
git show :/xxx:查找跟 xxx 有關的 submit
git diff branch1 branch2:比較兩個 branch 之間的異同
相關軟體

- Detailed history viewer
- Nice commit GUI, allowing hunk- and line-wise staging
- Fast workflow
- Explore tree of any revision
- Nice Aqua interface
- Paste commits to gist.github.com
- QuickLook integration


相關連結
