使用Git進行協同開發
用了一段時間github,一直想用時間來對git的使用來做一段筆記,前段時間比較忙,現在沉下心來學習也是極好的。
很多專案開發會採用git這一優秀的分散式版本管理工具來進行專案版本管理。因為git的使用非常靈活,所以在實際操作中會有許多不同的工作流程。不同團隊對於不同專案會有不同的協作方式。掌握git版本管理開發,對以後的學習和開發都有很多好處。
首先基本名詞要懂:
倉庫(Repository)、分支(branch)、工作流(workflow)
1. 倉庫(Repository)
在專案的開始到結束,我們會有兩種倉庫。一種是源倉庫(origin),一種是開發者倉庫。
源倉庫(origin)的有兩個作用:
-
彙總參與該專案的各個開發者的程式碼
-
存放趨於穩定和可釋出的程式碼
源倉庫應該是受保護的,開發者不應該直接對其進行開發工作。只有專案管理者(通常是專案發起人)能對其進行較高許可權的操作。
開發者倉庫:
任何開發者都不會對源倉庫進行直接的操作,源倉庫建立以後,每個開發者需要做的事情就是把源倉庫的“複製”一份,作為自己日常開發的倉庫。這個複製,也就是github上面的fork。
每個開發者所fork的倉庫是完全獨立的,互不干擾,甚至與源倉庫都無關。 每個開發者倉庫相當於一個源倉庫實體的影像, 開發者在這個影像中進行編碼, 提交到自己的倉庫中,這樣就可以輕易地實現團隊成員之間的並行開發工作。 而開發工作完成以後, 開發者可以向源倉庫傳送pull request
2. 分支(branch)
在git中,分支操作則是每個開發人員日常工作流。利用git的分支,可以非常方便地進行開發和測試。
我們為git定下一種分支模型,在這種模型中,分支有兩類,五種:
-
永久性分支
-
master branch:主分支
-
develop branch:開發分支
-
-
臨時性分支
-
feature branch:功能分支
-
release branch:預釋出分支
-
hotfix branch:bug修復分支
-
master:主分支從專案一開始便存在,它用於存放經過測試,已經完全穩定程式碼;在專案開發以後的任何時刻當中,master存放的程式碼應該是可作為產品供使用者使用的程式碼。每一次master更新的時候都應該用git打上tag,說明你的產品有新版本釋出了。
develop:開發分支,一開始從master分支中分離出來,用於開發者存放基本穩定程式碼。開發者把功能做好以後,是存放到自己的develop中,當測試完以後,可以向管理者發起一個pull request,請求把自己倉庫的develop分支合併到源倉庫的develop中。
歸納:所有開發者開發好的功能會在源倉庫的develop分支中進行彙總,當develop中的程式碼經過不斷的測試,已經逐漸趨於穩定了,接近產品目標了。這時候,我們就可以把develop分支合併到master分支中,釋出一個新版本。
feature:功能性分支,是用於開發專案的功能的分支,是開發者主要戰鬥陣地。開發者在本地倉庫從develop分支分出功能分支,在該分支上進行功能的開發,開發完成以後再合併到develop分支上,這時候功能性分支已經完成任務,可以刪除。功能性分支的命名一般為feature-*,*為需要開發的功能的名稱。
release:預釋出分支,當產品即將釋出的時候,要進行最後的調整和測試,這時候就可以分出一個預釋出分支,進行最後的bug fix。測試完全以後,釋出新版本,就可以把預釋出分支刪除。預釋出分支一般命名為release-*。
hotfix:修復bug分支,當產品已經發布了,突然出現了重大的bug。這時候就要新建一個hotfix分支,繼續緊急的bug修復工作,當bug修復完以後,把該分支合併到master和develop以後,就可以把該分支刪除。修復bug分支命名一般為hotfix-*。
示範:舉一個例子,A正在做一個團隊專案,已經把源倉庫fork了,並且clone到了本地。現在要開發網站的某個功能。A在本地倉庫中可以這樣做:
-
切換到develop分支 :>>> git checkout develop
-
分出一個功能性分支: >>> git checkout -b feature-discuss
-
在功能性分支上進行開發工作,多次commit,測試以後...
-
把做好的功能合併到develop中:
>>> git checkout develop # 回到develop分支
>>> git merge--no-ff feature-discuss# 把做好的功能合併到develop中
>>> git branch -d feature-discuss # 刪除功能性分支
>>> git push origin develop # 把develop提交到自己的遠端倉庫中
3. 工作流(workflow)
1) 源倉庫的構建,建立一個專案,初始化了兩個永久性分支master和develop.
2) 開發者fork源倉庫
3) 把自己開發者倉庫clone到本地,命令:git clone
4) 構建功能分支進行開發,完成後合併到自己的develop分支。
進入倉庫中,按照前面說所的構建功能分支的步驟,構建功能分支進行開發、合併,假設我現在要開發一個“討論”功能:
>>> git checkout develop # 切換到`develop`分支
>>> git checkout -b feature-discuss # 分出一個功能性分支
>> touch discuss.js # 假裝discuss.js就是我們要開發的功能
>> git add .
>> git commit -m 'finish discuss feature'# 提交更改
>>> git checkout develop # 回到develop分支
>>> git merge--no-ff feature-discuss# 把做好的功能合併到develop中
>>> git branch -d feature-discuss # 刪除功能性分支
>>> git push origin develop # 把develop提交到自己的遠端倉庫中
5) 向管理員提交pull request。經過測試以後,覺得沒問題,就可以請求管理員把自己倉庫的develop分支合併到源倉庫的develop分支中,這就是傳說中的pull request。
6) 管理員測試、合併
1) 對程式碼進行review,github提供非常強大的程式碼review功能
2) 在本地測試新建一個測試分支,測試pull request的程式碼
>> git checkout develop # 進入本地的develop分支
>> git checkout -b livoras-develop
# 從develop分支中分出一個叫livoras-develop的測試分支測試pull request程式碼
>> git pull https://github.com/livoras/git-demo.git develop
# 把pull request的程式碼pull到測試分支中,進行測試
3) 判斷是否同意合併到源倉庫的develop中,如果經過測試沒問題,可以把我的程式碼合併到源倉庫的develop中:
>> git checkout develop
>> git merge--no-ff livoras-develop
>> git push origin develop
相關推薦
使用Git進行協同開發
用了一段時間github,一直想用時間來對git的使用來做一段筆記,前段時間比較忙,現在沉下心來學習也是極好的。 很多專案開發會採用git這一優秀的分散式版本管理工具來進行專案版本管理。因為git的使用非常靈活,所以在實際操作中會有許多不同的工作流程。不同團隊對於不同專案會有不同的協作方式。掌握git版
使用git和github進行協同開發流程
搜到的一位大神寫的東西,感覺很不錯。收了! 它的老家:https://github.com/livoras/blog/issues/7 以下是原文內容: 目錄 前言 倉庫(Repository) 源倉庫 開發者倉庫 分
使用git和gitlab進行協同開發流程(轉發)
看了一下此文,感覺流程管理比較合理,對個人有一些啟發,轉發記錄一下,後續可參考 一、基本概念 1.倉庫(Repository) ①源倉庫(線上版本庫) 在專案的開始,專案的發起者構建起一個專案的最原始的倉庫,稱為origin。 源倉庫的有兩個作用: 1
使用Git進行團隊開發
工具準備 作業系統中已安裝Git,個人比較喜歡命令列操作,所以即使Windows下也習慣使用Git Bash。 專案準備 選擇伺服器 需要有一個存放在Git伺服器中的專案,不限於Github和CSDN中的CODE。 舉例: [email
華為如何實現基於Git的跨地域協同開發
git 跨地域協同開發跨地域開發的需求其實由來已久,在IT/互聯網發展的早期就已存在,只不過限於當時網絡環境的因素,無法在線上有效的完成協同工作,所以沒法實際開展。而隨著近十年網絡的快速發展,跨地域協同開發線變得可能而且越來越普遍,尤其是在大公司內部。同時隨著行業的發展,敏捷開發模式的不斷推廣,軟件交付和更
Git學習筆記(三)遠程庫(GitHub)協同開發,fork和忽略特殊文件
tex 情況 learn 多人 版本管理 獲得 logs 秘鑰 多個 遠程庫 遠程庫,通俗的講就是不再本地的git倉庫!他的工作方式和我們本地的一樣,但是要使用他就需要先建立連接! 遠程庫有兩種,一個是自己搭建的git服務器;另一種就是使用GitHub,這個網站就是
使用Git與GitHub協同開發並搭建私有GitLab代碼托管服務器
tlab conflict mixed its ssh 令行 mas windows安裝 emc 目錄 [TOC] Git的發展史 Linus在1991年創建了開源的Linux,從此全世界的工程師參與了Linux的開發,期初Linus是通過手動diff的方式進行代碼審核和合
mzy git學習,git協同開發忽略文件配置以及一些雜點(九)
回憶一個電腦多賬戶問題 之前也說了,如果使用ssh登陸的話,一個電腦就只能登陸一個賬號了,不像通過憑據可以切換(但是其實也可以每次去生成新的公鑰和私鑰,只要你不嫌麻煩) 再次補充: ssh-keygen -t rsa -C “郵箱” 到github或者碼雲上選擇: clone o
git協同開發 Github之協同開發
Github之協同開發 一、協同開發 1、引子:假如三個人共同開發同一份程式碼,每個人都各自安排了任務,當每個人都完成了一半的時候,提交不提交呢? 要提交,提交到dev嗎,都上傳了一半,這樣回家拿出來的程式碼根本跑不起來。所以, 為每一個
git協同開發
當你從遠端倉庫克隆時,實際上Git自動把本地的master分支和遠端的master分支對應起來了,並且,遠端倉庫的預設名稱是origin。 要檢視遠端庫的資訊,用git remote: [[email protected] oldboypython]# git remote origing
Git 多人協同開發
1.程式碼編輯介面介紹:此處使用gedit做演示 程式碼編輯介面左邊為模擬經理的操作 程式碼編輯介面右邊為模擬張三的操作 2.模擬張三先編輯login.py檔案程式碼 進入張三本地倉庫:cd Desktop/zhangsan/test007
Git詳解 三( 多人協同開發 ,程式碼衝突)
多人協同開發 1.程式碼編輯介面介紹:此處使用gedit做演示 程式碼編輯介面左邊為模擬經理的操作 程式碼編輯介面右邊為模擬張三的操作 2.模擬張三先編輯login.py檔案程式碼 進入張三本地倉庫:cd Desktop/zhangsan/tes
Android Studio中Git的配置及協同開發
以前使用Studio版本控制使用的都是SVN,最近入職了新公司使用的GIT,在網上找了一下資料,在此記錄下。 中間也遇到一個小問題就是新導下來的專案沒法提交,右鍵沒有“Git”選單,解決方法是在設定裡面“Verson control”在右側選擇相應的工程,點選“+”號即可
GIT進行多人開發的模擬流程
一、準備環境 win:開發者一,本機windows lin:開發者二,虛擬機器linux project:使用github的公共倉庫 因為兩臺主機都將金鑰放在了倉庫擁有者,所以兩邊遠端提交程式碼後都將直接合併到分支 二、模擬一次流程 1. 拉取專案到本地
利用Github、Eclipse進行分散式協同開發
Git是分散式版本控制的一種實現方式,Github提供了Git版本庫託管服務。本文主要介紹利用Github與Eclipse進行團隊分散式協同開發。需要指出的是,任何IDE都可以與Git協作進行開發,Eclipse與Github並無關聯。 Git歷史
Git初體驗——git項目開發流程
創建目錄 管理 文本 目錄 ria 遠程 歷史 zookeepe clas 眾所周知,Git是一款版本控制軟件,之前總是習慣把每次修改後的代碼打包並且標註好時間等信息加以區分,使用git之後就完全不需要這麽做了。 1.安裝git: 官網下載安裝即可,沒什麽復雜的步驟 2.新
Github 協同開發
evel ranch nat 開發者 code request 新的 spa 建立 ithub開發流程 Github的流程。也就是: 開發者各自fork項目的repo到自己Github賬戶下 每次開發同步到項目的repo然後再進行開發 push自己的開發分支到自己Gith
使用bottle進行web開發(1):hello world
matches 動態 bsp allow 模塊 開發 code spec converter 為什麽使用bottle?因為簡單,就一個py文件,和其他模塊沒有依賴,3000多行代碼。 http://www.bottlepy.org/docs/dev/ 既然開始學習
使用bottle進行web開發(5):Generating Content
方便 () strings 系統 end byte 導致 res 名稱 在純粹的 WSGI中,你的應用能返回的數據類型是十分有限的,你必須返回可叠代的字符串,你能返回字符串是因為字符串是可以叠代的,但是這導致服務器將你的內容按一字符一字符的傳送,這個時候,Unicode 字
使用bottle進行web開發(4):HTTPError
instead bject hat red uil tle ott class not from bottle import error @error(404) def error404(error): return ‘Nothing here, sorry‘