從 SVN 切換到 git,踩了許多坑,總結一下 git 的常用命令以及管理項目的流程。
1. 一般公司會有一個遠程庫,第一步是要克隆遠程庫到本地
git clone xxx (xxx 為遠程庫地址)
2. 這時本地庫跟遠程庫的代碼是一樣的,而當我們要開發新功能或者改bug時,就得在本地新建分支
git checkout -b dev (dev 為本地分支名)
注意:git checkout -b dev 是 git branch dev (新建分支) 與 git checkout dev (切換分支)合並,意思是新建並切換到dev上
3. 接下來就是敲代碼...敲完要保存並提交到本地庫
git add . (把修改加入stage中,其中 add . 指的是 add 所有修改的代碼)
git commit -m 'xxxx' (提交修改到本地 dev 分支,其中 xxxx 指的是提交時的注釋)
4. 提交到本地庫以后還要將改變提交到遠程庫
git push origin dev (dev 為遠程庫的分支名,一般跟本地庫分支名是一樣的)。此時我們並沒有在遠程庫新建過分支,在遠程庫找不到 dev 分支時,這個命令會自動在遠程庫新建 dev 分支,很方便。
5. 在遠程庫申請分支合並請求,將遠程庫的分支與 master 合並,合並完以后沒問題的話本地庫與遠程庫的分支就可以刪掉了
刪除本地分支: git branch -d dev
刪除遠程分支:git push origin --delete dev (一般不用自己刪,合並完可以選擇自動刪除)
刪除本地所有分支(除了master):git branch | grep -v "master" | xargs git branch -d
6. 再次新建分支前,先將本地 master 更新一下,與遠程庫同步。
git fetch origin master (拉取遠程庫master)
git diff master (將本地代碼與遠程代碼進行比較)
git merge origin master (本地 master 與 遠程 master 合並)
或者直接 git pull origin master,一步到位。關於git fetch 與 git pull 的區別,網上有很多解釋,一般的說法是 git pull 相當於 git fetch + git merge,