1. 程式人生 > >使用Git進行團隊開發

使用Git進行團隊開發

工具準備

作業系統中已安裝Git,個人比較喜歡命令列操作,所以即使Windows下也習慣使用Git Bash。

專案準備

選擇伺服器

需要有一個存放在Git伺服器中的專案,不限於Github和CSDN中的CODE。
舉例:
[email protected]:username/project.git
或者:
https://github.com/username/project.git
以上是同一個Github專案的SSH和HTTPS兩種路徑,不贅述。
如果搭建私服,可以使用git init --bare project.git建立。

建立專案

本文以GitHub專案例:

[email protected]:username/project.git

然後在本地克隆專案程式碼:
git clone [email protected]:username/project.git

檢視專案分支情況可以使用命令git branch:

$ git branch
* master 

可以看到當前專案坐在的分支是master(*號後邊為當前所在分支名)。
而且專案目前也只有一個分支,就是master。

團隊開發

但是我們在實際專案開發中,通常都是以團隊開發為主,所以為了維護線上主幹程式碼的穩定,我們也都會採取建立分支-開發-測試-合併-上線的形式進行實際操作的。所以接下來描述一下簡單的團隊開發Git專案。

本地分支

工程師Alice需要對原來的程式碼做改動,這是她需要建立一個分支,名字為develop:

$ git branch develop
$ git branch
  develop
* master

這個時候我們看到本地工作區已經有兩個分支:master和develop。但當前工作區還是在master上(注意*號位置),需要手動切換到develop上。只需使用git checkout命令

$ git checkout develop
Switched to branch 'develop'
$ git branch
* develop
  master

這樣就將當前工作區切換到新的分支中,我們可以發現此時的develop分支中的內容是master的複製。
當然有人希望建立分支後直接切換到新的分支:

$ git checkout -b develop
Switched to a new branch 'develop'

遠端分支

現在的develop分支只是存在於Alice的本地環境,當工程師Bob打算協同Alice進行相同業務的開發時,他也需要拿到develop分支的程式碼,那該怎麼獲取呢,此時需要Alice將本地分支程式設計遠端分支,以供給其他工程師共同開發。
使用git branch -a能夠查詢當前所有分支,包括本地分支和遠端分支(下邊remotes/origin開頭)

$ git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

發現並沒有遠端分支裡並沒有新建的develop,這是需要執行git push origin develop命令,將本地develop分支推送到Git伺服器,生成遠端分支。

$ git push origin develop
Total 0 (delta 0), reused 0 (delta 0)
To [email protected].com:username/project.git
 * [new branch]      develop -> develop

這是再用git branch -a檢視分支。

$ git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

可以看到多了一個名為remotes/origin/develop的分支,即為建立的遠端分支。

好了,現在Bob和其他任何工程師都可以通過拉取遠端分支獲取Alice建立的develop分支程式碼。
Bob先做一次分支查詢

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

發現存在remotes/origin/develop遠端分支。
此時只需執行git fetch origin develop:develop將遠端分支程式碼拉取到本地.。

$ git fetch origin develop:develop
From github.com:username/project
 * [new branch]      develop    -> develop
$ git branch -a
  develop
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

再通過查詢可以看到本地多了一個develop本地分支。
git fetch origin develop:develop這個命令的意思是將遠端develop分支程式碼拉取到本地develop分支中。這是一個快捷的方式,如果Bob本地沒有develop分支,該命令會建立一個名為develop的分支,如果Bob本地有自己的分支,如Bob_dev,則可以執行git fetch origin develop:Bob_dev或者先切到Bob_dev分支內,執行git fetch origin develop即可。

多人開發

這裡寫圖片描述
此時Alice和Bob就可以切到本地develop分支進行開發了(git checkout develop)。
1. 開發過程中每個工程師在推送程式碼之前要先執行拉取操作,因為遠端倉庫有更新的話,不先拉取(pull/fetch)是無法推送(push)的,儘量少使用git pull進行拉取,而是先用git fetch拉取在進行git merge
2. 在每個開發階段都及時地提交程式碼(git commit)並推送(git push)至遠端倉庫,可以使用git status檢查工作區是否還有未處理的程式碼和檔案。在提交程式碼的時候寫好優秀的註釋(git commit file -m 'Alice fix bug in filename')。
3. 在專案程式碼將要合併到主幹master的時候,要由一名工程師做最後的合併處理,如建立分支的Alice。由於在合併程式碼時極易產生衝突,所以一定要先與主幹程式碼版本做對比(git diff),合併時可以使用git merge,當然如果develop可以廢除的話,也可以使用git rebase做最後的合併。
4. 最後在分支程式碼合併到主幹或者程式碼上線後,develop分支完成了自己的任務,可以刪除本地分支和遠端分支。
刪除本地分支:

$ git branch -d develop
Deleted branch develop (was 1fe1352).
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

刪除遠端分支:

$ git push origin --delete develop
To git@github.com:username/project.git
 - [deleted]         develop
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

解決衝突

在程式碼的合併階段(git pull或者git merge命令),通常會產生程式碼衝突。如果是其他工程師造成的衝突,需要轉給相關工程師處理,也造成大量的溝通成本。為了減少衝突,建議每個工程師各自單獨負責模組,業務互相不衝突。
在解決衝突時,需要使用git loggit diff來檢查歷史版本的修改資訊

$ git log README.md
commit 265886db0d6868cc669e0ef253e6e9ac1e39319c
Author: Alice <[email protected].com>
Date:   Sat Apr 30 23:38:27 2016 +0800

    chenge readme

commit 1fe13525fa14a4234accd9c345c2a85fd1b30b09
Author: Bob <[email protected].com>
Date:   Sat Apr 30 17:06:12 2016 +0800

    Create README.md

git log可以列出該檔案的歷史提交版本,能看到提交的版本號和提交的註釋資訊。
然後使用git diff來對比該檔案兩個版本的不同。

$ git diff 265886db0d6868cc669e0ef253e6e9ac1e39319c 1fe13525fa14a4234accd9c345c2a85fd1b30b09 README.md 
diff --git a/README.md b/README.md
index a760469..d879d21 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,2 @@
 # testRepository
-project Repository
+Test Repository

需要回退到某一版本,可以使用git reset命令

$ git reset --hard 265886db0d6868cc669e0ef253e6e9ac1e39319c 
HEAD is now at 265886d chenge readme

如果檔案尚未提交,也可以用git checkout filename 恢復到提交前。

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout README.md 
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

開發規範

  1. git config --global user.name "<使用者名稱>"
    git config --global user.email "<電子郵件>" 。
  2. 團隊開發禁止在主幹直接修改程式碼,一定要開分支,而且是遠端分支進行開發。
  3. 建立分支可以打標籤,git tag
  4. 拉取程式碼時最好先git fetchgit merge而不是直接git pull
  5. 提交程式碼和推送程式碼以及程式碼上線之前,一定要先和原來版本對比 git diff
  6. 提交程式碼加註釋 git commit -m 'Bob developed'

這裡寫圖片描述

相關推薦

使用Git進行團隊開發

工具準備 作業系統中已安裝Git,個人比較喜歡命令列操作,所以即使Windows下也習慣使用Git Bash。 專案準備 選擇伺服器 需要有一個存放在Git伺服器中的專案,不限於Github和CSDN中的CODE。 舉例: [email

Github——利用 Github 進行團隊開發

origin pull 生產環境 沖突 git push 刪除 可能 基本 push github 提供了免費的遠程倉庫,私密倉庫需要花錢,當然可以選擇國內的碼雲 本地倉庫初始化 git init git add -A git commit -m ‘first com

Git團隊開發指南

多人開發步驟 組長-準備步驟 初始化git專案。如:使用github的情況——先在github建立專案 git clone [email protected]:xxxxx/xxxxxxx.git git checkout -b develop git p

使用GitHub進行團隊開發

前段時間和幾個同學做了一個小專案,為了方便程式碼整合,於是研究了一下GitHub,利用GitHub進行程式碼和版本的管理。 使用GitHub管理程式碼和版本是真的很方便,所以在此做下筆記以便日後檢視,順便給小白分享一波經驗。 步驟如下: 第一步:註冊GitHub賬號

Eclipse整合Git團隊開發:分支管理

  在日常開發工作中,我們通常使用版本控制軟體管理團隊的原始碼,常用的SVN、Git。與SVN相比,Git有分支的概念,可以從主分支建立開發分支,在開發分支測試沒有問題之後,再合併到主分支上去,從而避免了直接在主分支修改程式碼。   本文介紹如何使用eclipse管理Git分支。

使用git進行團隊協作程式設計

一. 建立一個organization前提:已經有github帳號,沒有的話直接百度搜索github官網進行註冊接下來按照截圖進行操作:點選右上角自己的頭像,然後選擇settings接著在左邊一欄選擇organizations選擇new organization按照要求填寫相

使用Git進行協同開發

用了一段時間github,一直想用時間來對git的使用來做一段筆記,前段時間比較忙,現在沉下心來學習也是極好的。 很多專案開發會採用git這一優秀的分散式版本管理工具來進行專案版本管理。因為git的使用非常靈活,所以在實際操作中會有許多不同的工作流程。不同團隊對於不同專案會有不同的協作方式。掌握git版

圖文詳解如何利用GIT+GitHub進行團隊寫作開發

bsp 解決沖突 atlas evel src 出現 info flow 多人 圖文詳解如何利用Git與GitHub進行團隊協作開發 團隊協作開發中,大部分都會用到版本控制軟件,比如Git、Svn等。本文將通過一個實例,詳細講解在真實的工作環境中,一個團隊應該如何利用Gi

團隊開發Git沖突解決

comm 方法 add str 協作開發 比較 團隊開發 ron 寫入 正常來說我們團隊協作開發過程中,沖突是常有的事,下面介紹下本人在開發中的解決辦法。 沖突的主要原因就是由於我們開發人員在分支的同一位置寫入了不一樣的代碼,然後合並到主幹上導致我們沖突。 方法: 當沖突發

git團隊開發常用命令

pull 宋體 成功 常用 項目 http 不同 恢復 git log Git git clone <項目地址,http(s)> 把雲端的項目克隆報本地 git pull 如果有沖突,就先保存本地代碼 git stash暫時擱置

利用Team@OSC進行團隊協作開發平臺

檢查 log uri 來講 方式 tps png 模塊 時間 利用Team@OSC進行團隊協作開發平臺 Team@OSC介紹 Team@OSC 是一個團隊協作開發平臺,輕松管理輕量級團隊。代碼運行平臺(PaaS)、代碼質量檢查應有盡有。 鏈接:https://team.os

git 團隊開發常用操作(適用於 gogs、gitlab、github)

git bash 開發 -m sgi pull .cn 定義 check 右鍵 git 團隊開發常用操作流程(適用於 gogs、gitlab、github) NO1 項目構建者 (1)在遠程倉庫創建倉庫 (2)將夥伴添加到倉庫合作者中(無先後要求) (2)cd 到項目將要

Github——利用 Github 進行團隊開發

倉庫 計算 改變 組織者 行合並 new 遠程倉庫 做了 files github 跨團隊開發是 github 平臺的生命力所在 非項目成員 fork 一份項目到自己的遠程倉庫 git clone,克隆一份到自己計算機進行項目開發 git add、git commit

使用git和github進行協同開發流程

搜到的一位大神寫的東西,感覺很不錯。收了! 它的老家:https://github.com/livoras/blog/issues/7 以下是原文內容: 目錄 前言 倉庫(Repository) 源倉庫 開發者倉庫 分

團隊開發工具git常用命令

Git 常用命令 Git配置 git config --global user.name "storm" git config --global user.email "[email protected]" git config --global color.ui true git config

git 團隊開發流程規範

https://www.jianshu.com/p/9801b98c1de4 git開發流程規範 最近公司在由 svn 轉為 git 做專案管理,之前在小團隊開發的時候最多也就用到 dev 分支和 bugfix 分支,來到新的公司團隊比較大,各自負責各自的功能模組,為了大家更規範的開

在企業中是怎麼簡單使用Git的參與團隊開發的?Git使用教程

一、下載安裝 1、首次使用git,需設定git的使用者名稱與郵箱: $ git config --global user.name "username" $ git config --global user.email "your email" 2、檢視

開發環境之git團隊協作git工作流與常用命令

此篇文章只是一篇傻瓜式的,記錄工作中比較規範且常見的一個git工作流需要用到的命令,讓你可以快速的開始工作。而不是一些長篇大論的理論知識,如果你有用過sourcetree或者其它圖形化工具,結合你正在使用的工具,敲這些命令,看圖形化工具中的變化,對比思考這些命令可能會更容易吸收。 1.基本配置 剛入職公司

敏捷開發中如何進行團隊績效管理

敏捷開發中,績效管理是管理層非常關心的問題,而敏捷(或Scrum)中沒有關於績效的定義或做法。本文是Ken Rubin基於自己20多年的敏捷開發經驗總結出來的、敏捷團隊中如何進行績效管理。 幾乎我教過的每堂課或輔導過的每個組織都有下面這個問題:“我應該用什麼指標來確定團

Git篇--快速團隊開發

本人是一所本科院校大三學生,在校有自己的學生團隊,在專案開發中,為了提高開發效率,採用了Git技術。現總結下git,歡迎大家互相交流。 在學習git之前,我們先來了解一下git的一些基本概念 1.git工作流程見下圖 2.一些基本概念 .git