首頁  >  文章  >  後端開發  >  詳解Git-團隊迅速開發神器

詳解Git-團隊迅速開發神器

黄舟
黄舟原創
2017-03-21 09:56:381437瀏覽


本身是一所本科院校大三學生,在校有自己的學生團隊,在專案開發中,為了提高開發效率,採用了Git技術。現總結下git,歡迎大家互相交流。

在學習git之前,我們先來了解git的一些基本概念

1.git工作流程見下圖

詳解Git-團隊迅速開發神器

#2.一些基本概念

  • #.git目錄:使用git init初始化一個git倉庫時會產生. git隱藏目錄,裡面儲存的是整個專案的檔案改變記錄等資訊。

  • 工作區:可以理解為本地的git倉庫所在的目錄也就是專案目錄。

  • 暫存區:所有透過git add指令新增的檔案都儲存在暫存區,其實就是.git目錄下面的index索引檔中。

  • 版本庫:也就是整個git倉庫。

  • 三者的關係:工作區就是你的開發目錄,所有的檔案編輯透過git add加入到暫存區,然後透過git commit指令提交到本地git倉庫,然後透過git push推送到遠端git倉庫。

常規的git倉庫結構如下

git@git.xxx.com:user/project_name.git  
 |-master (主分支,和線上程式碼同步)
 |-develop(開發分支,功能開發完成後先合併到develop,再講develop合併為master)
 |-feature(臨時性分支(功能分支),例如開發某個功能可以新建一個feature分支,完成後將feature分支合併到develop)
   |——— feature/update_online_pay_api  
#    |——— feature/add_new_feature..  
   |——— …  
#  |-release(臨時性分支(預發分支),開發完成提測,新建release分支進行測試,完成後合併進master和develop)
   |——— release/update_online_pay_api  
   |——— …  
# |-hotfix(臨時性分支(熱修改分支),一般用於緊急修改bug等短期任務時建立的分支,修改完成後合併到master和develop)     

|—— hotfix/handler_pay_bug  
|——— …

關於分支命名規則:見名知意,臨時性分支可以使用'/'分隔,也可以使用'-'分隔等,沒有強制要求.

#當你接到一個產品需求,開始著手開發的時候,git流程是這樣的:

#首先你需要把遠端git倉庫中的專案同步到你本地,流程如下:

cd ~/workspace/git/ // 进入你个人的工作目录
mkdir project_name // 新建一个目录用于存放代码,名称可以和远程仓库名称一样
cd project_name // 进入你新建的目录
git init // 使用git初始化这个目录为一个git仓库
git remote add origin git@github.com:22th/oh-my-zsh.git // 关联本地仓库到一个远程仓库
git fetch --depth=1 // 更新远程仓库的一些信息到本地,比如分支信息等
git checkout -b master origin/master // 检出一个分支master并关联远程的master分支
git pull // 更新本地仓库代码

透過以上流程就可以將遠端專案同步到本地,現在預設的是遠端的master分支,你不可以在master分支修改程式碼,一般來說你也沒有這個權限。 同步程式碼到本地之後,你需要根據業務需求,新建一個開發分支,名稱更具你的需求來調整,例如你要開發一個新功能,那你就建一個feature-xxx分支,如果你是解決一個bug ,你可以建一個hotfix-xxx分支。新建分支不建議從本地建,你應該從git倉庫管理後台新建,然後再檢出到本地。管理後台新建分支很簡單,不說了。
然後你就將你新建的分支check到本地,命令​​如下:git checkout -b feature-xxx origin/feature-xxx

接下來就是你愉快的開發過程,在你自己的分支上開發,測試,然後提交,會用到的git命令如下:

git add <file> // 将工作区修改添加到暂存区,加上 --all 参数表示将所有修改添加到暂存区
git commit -m “msg” // 将暂存区的修改添加到版本库
git push -u origin feature-xxx // 将本地仓库中的修改推送到远程
git status // 查看当前工作区间状态
git log // 查看历史commit
git checkout -- <file> // 用最后一次commit的文件替换当前工作区间的文件
git reset --hard // 丢弃工作区间所有修改,回滚到上一个commit状态
git checkout <版本号> // 回滚到指定版本

功能開發玩,就需要提測並發佈到線上了,流程如下

1.在git倉庫管理後台新建release-xxx分支,基於你的feature-xxx分支,主要用於測試。

2、release-xxx測試OK之後,就可以將其merge到master和develop分支,一般是透過git倉庫管理後台提交merge request,等待相關管理人員確認後合併到master,提交merge request之前,先merge一下master分支,保證master上新修改過的程式碼跟你同步。合併master的時候可能會產生衝突,找到衝突文件,解決並commit。衝突格式如下:

<<<<<<< HEADln -s ../statics xxx
=======ln -s ../statics statics
>>>>>>> master

其中«««刪除,也就是說如果你要保留你本地的程式碼,那麼就是這樣的:

<<<<<<< HEAD (删除)
ln -s ../statics xxx (保留)
======= (删除)
ln -s ../statics statics (删除)
>>>>>>> master (删除)

保留 «««git commit -am “解决冲突”。
3、好了,其他的工作就是运维人员来处理了。一般是这样的,release-xxx分支测试完成并解决所有冲突后,运维发布人员merge到master分支,然后通过 git d<a href="http://www.php.cn/wiki/109.html" target="_blank">if</a>f 608e120 4abe32e --name-only | xargs zip update.zip 命令打包差异文件,然后发布这个差异文件包就可以啦,不需要所有文件都覆盖线上文件。


到这里,整个git项目开发流程就已经非常清楚了。git还有很多高级功能,比如文件对比、文件历史修改记录、关联多个远程仓库等等需要你慢慢去摸索了。使用git要灵活运用分支,因为git新建切换分支的成本非常低,因为git新建分支不是想svn那样吧整个目录复制一遍,然后通过索引文件等更高级的方式来处理,效率高太多。

在推荐个git图形化管理工具:
source tree, mac和windows都有。


If you liked this article and think others should read it, please follow webff

以上是詳解Git-團隊迅速開發神器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn