1. 程式人生 > >專案開發中git使用的那些事兒

專案開發中git使用的那些事兒

Git作為一個版本工具,現在為大多數公司的技術團隊用於程式碼的版本控制,對其的掌握十分重要,這篇博文旨在從git在工作中的應用場景上做一些基本的介紹,以供公司git新人蔘考,快速上手。

Git一般分為遠端資料庫和本地資料庫兩種,從團隊程式設計角度來看,本地資料庫為個人開發所有,當個人的編碼任務完成後,可將程式碼上傳到遠端資料庫為團隊共享。

在Git管理中,實際操作的並不是資料庫,而是工作樹,下圖是git管理的一個簡單示意圖。

 

在資料庫和工作樹之間有索引,索引是為了向資料庫提交作準備的區域,最終儲存在資料庫裡的是索引的狀態,可以避免工作樹中不必要的檔案提交,到達靈活操作修改的功能。

話不多說,教程開始。

使用git,首先就得建立git倉庫(資料庫)。

命令:gitconfig –-global user.name “使用者名稱”   (配置全域性使用者名稱

命令:gitconfig –-global user.email “使用者郵箱” (配置全域性使用者郵箱

命令:gitinit (在所在目錄建立一個git倉庫)

建立git 倉庫後,我們通常有兩種場景,一種是專案為空,團隊所有人一切從頭開始;另一種則是中途加入專案,要從已有的程式碼上進行開發。

1.    場景:從頭開發

在目錄中編輯任何文件後,將所做修改上傳到遠端伺服器,以供團隊共享。

命令: git add .  (將工作樹中所做修改加入到索引)

命令: git commit -m “本次提交修改的說明描述”(將所做修改加入到)

命令: git remote add <主機名:origin> <遠端地址: https://github.com/xiaoyangkuaipao/simplest-redux-example >(新增遠端倉庫)

命令: git push <主機名 : origin> <分支名:master>(上傳程式碼至遠端倉庫)

2.    場景:中途開發

先從遠端倉庫中獲取程式碼後,再編寫程式碼。

命令: git clone<遠端地址: https://github.com/xiaoyangkuaipao/simplest-redux-example> <本地目錄:gitTest>

(克隆遠端倉庫到本地)

注意: git預設的遠端分支是master,故而如果遠端倉庫沒有master分支,不能直接使用git clone ,而應該使用git clone -b <遠端分支名>

獲得程式碼後,我們就可以使用git來管理與其他同事一起編寫的程式碼。

1.    場景:獲取新的遠端程式碼前,原生代碼的管理方式

⑴ 程式碼階段性完成,可使用commit提交本地當前狀態

命令: git add .

命令: git commit -m “...”

命令: git pull <遠端分支名> <本地分支名>(若兩者同名可省略)

⑵ 程式碼處於不穩定狀態,使用stash暫存本地當前狀態

命令: git stash

命令: git pull <遠端分支名> <本地分支名>(若兩者同名可省略)

命令: git stash pop(應用最新stash)

命令: git stash list

命令: git stash apply [email protected]{num} (多次stash,應用時可指定stash版本)

命令: git stash clear(清空stash)

兩者的區別就在於,多次使用commit提交不成熟程式碼,會造成log的冗餘,而stash不會再log中顯示,但多次stash會使原生代碼在回滾時,產生錯亂,因此,應該合理使用者兩種方式。

2.    場景:獲取不同分支的程式碼

⑴使用merge合併新的程式碼

命令: git checkout feature

命令: git merge master

這樣就可以將master分支合併到feature分支中,並在feature上產生新的commit,並在log中儲存master合併的歷史,過多的合併會造成分支歷史的汙染。

⑵使用rebase合併新的程式碼

命令: git checkout feature

命令: git rebase master

這樣同樣可以將master分支合併到feature分支中,但不會在feature上產生新的commit,以及不會再log中儲存master合併的歷史,從而造成分支歷史的汙染,但這種合併方式忽略了合併的資訊,會給程式碼回溯造成影響。

兩者的差異圖示



⑶ 使用cherry -pick獲取指定commit中的提交

開發過程中,如果僅僅只需要某一次提交中的程式碼熱更新到測試中時,使用cherry -pick是最合適的。

命令:git cherry-pick <commit id>

3.    場景: 回退至某次程式碼提交的commit

(1)    使用git revert撤銷某次commit,保留此次操作前其他的commit,併產生一個新的commit來覆蓋撤銷的commit

命令: git revert <commitID>

(2)    使用git reset回退至某次commit,此次操作前其他的commit會被移除

命令: git reset <commitID>

           

相關推薦

專案開發git使用的那些事兒

Git作為一個版本工具,現在為大多數公司的技術團隊用於程式碼的版本控制,對其的掌握十分重要,這篇博文旨在從git在工作中的應用場景上做一些基本的介紹,以供公司git新人蔘考,快速上手。 Git一般分為遠端資料庫和本地資料庫兩種,從團隊程式設計角度來看,本地資料庫為個人開發所

iOS專案開發Git的使用

一、Git介紹 Git是一個專案原始碼管理系統,在多人合作開發過程中是至關重要的。在專案開發中,我們可以通過Git客戶端(Github、Tower、Tortoise等)或者通過命令列來使用Git,關於Git基礎操作的命令參考文章Git基本操作命令。即使是在獨立開發過程中,使

專案開發常用的git命令及使用流程

git的基本命令 下載&初始化 git clone //從遠端倉庫下載檔案 git init //在需要上傳的檔案下初始化倉庫 對檔案進行操作 git add <filename> //將資料夾下的所有檔案上傳到工作區 , *表示上傳所有 git com

ASP.NET Core HTTP 管道那些事兒

那些事兒 管道 IApplicationBuilderIApplicationBuilder 是應用大家最熟悉它的地方應該就是位於 Startup.cs 文件中的 Configure 方法了吧public void Configure(IApplicationBuilder app, ILoggerF

團隊開發Git沖突解決

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

關於開發入門的那些事兒2

開發入門 eclips 自己 設置 C# 集成 F5 env rate 說一個新的名詞,開發工具,有了開發工具,你後續的工作才會更輕松。 先簡介一個新的東西IDE全名 Integrated Dexelopment Environment 翻譯過來就是集成開發環境,這是用

【經驗分享】響應式網站項目實操過程那些事兒

oat fib lin style 定義 oss 柵格 簡單 報名 本次網站改版升級是我來到新公司的第一個項目,需求之初並沒有提及要做響應式,在首次評審時領導和研發均認為響應式處理與我們網站相對契合,就這樣我開始了我職場生涯中第一個響應式網站設計。下面就跟大家分享響應式網站

專案開發dev、test和prod是什麼意思

開發環境(dev):開發環境是程式猿們專門用於開發的伺服器,配置可以比較隨意,為了開發除錯方便,一般開啟全部錯誤報告。 測試環境(test):一般是克隆一份生產環境的配置,一個程式在測試環境工作不正常,那麼肯定不能把它釋出到生產機上。 生產環境(prod):是值正式提供對外服務的,一般會關掉錯誤報告,開啟

vue專案開發使用mixins

mixins的使用 個人理解mixins就是定義一部分公共的方法或者計算屬性,然後混入到各個元件中使用,方便管理與統一修改 1.在assets資料夾下建立一個js檔案 // 建立一個需要混入的物件 export const mixinTest1 = { c

部落格園專案開發的難點

1.註冊檢視 一般註冊是通過form表單形式post提交資料,資料一般通過class欄位過濾值看clean_data來獲取的 過濾欄位類(放在view視圖裡) class UserForm(forms.Form): user=forms.CharField(max_length=32,

【解決問題策略】在專案開發,尋找適合的解決途徑

一,論述 在平時的開發中,遇到複雜的問題,總是會腦子亂成一堆,不知道先從哪方面入手。但如果是自己先用文件記錄思考過程,將每一步的步驟都寫下來,又感覺很浪費時間,很糾結。 最近看了一篇文章,我覺得對我還是挺有啟發的。覺得以前自己思維太過死板了。不懂得逐漸分析問題,細化問題。下

vue實際專案開發,公共js(全域性引入)檔案如何寫,如何引入到入口檔案main.js

公共js檔案,比如commen.js通過export default暴露出來export default { install(Vue,options){  Vue.prototype.方法名=function(){}}在入口檔案main.js引入import comm form './assets/js/c

Web專案開發常見安全問題及防範

計算機程式主要就是輸入資料 經過處理之後 輸出結果,安全問題由此產生,凡是有輸入的地方都可能帶來安全風險。根據輸入的資料型別,Web應用主要有數值型、字元型、檔案型。 要消除風險就要對輸入的資料進行檢查,對於Web應用來說,檢查的位置主要是前端和後端。前端檢查只能防止正常狀況,沒法防止通過工具、程式繞開前端

SpringBoot 實際專案開發工廠模式的巧妙使用

簡單工廠模式:          簡單工廠模式是建立型模式,建立型模式顧名思義,也就是說在建立物件的時候,遇到了瓶頸才會選擇的設計模式。那麼該什麼情況使用呢。    簡單工廠模式的實質是由一個工廠類根據傳入的引數

詳解Vuex在Vue.js專案開發的應用

       Vue.js是國內當下十分流行的一個前端Web框架,具有豐富的組建和庫支援,其中Vuex可以說是最為重要的一個了,但是,在一些專案中,我們甚至都不會用到Vuex,所有Vue開發者有時候就會忽略掉這樣一個重要的組建,今天我就結合自己的學習過程,對Vuex做一個總結

web專案開發初始化basePath

web專案中我們幾乎所有頁面都會有對靜態資源的引用,而所有引用都需要資源的地址,但是所有地址的前半部分都是相同的,所以我們可以把這部分叫做basePath,可以在專案啟動的時候獲取到專案的basePat

專案開發的貝塞爾曲線

本文由鄒啟文授權網易雲社群釋出。 郵箱大師PC版中,設計師提出了一個很妙的想法: 發信時,出現一個飛機,從寫信中央飛往進度目的地。  附加要求: 1,飛行曲線,飛機先加速,然後減速抵達終點 2,飛行途中,需要轉換飛機朝向 3,飛行途中,飛機漸漸變小 

Java專案開發關於classpath路徑的理解

在做專案的過程中,經常會遇到在classpath下載入配置檔案,但是對於classpath的理解確一直很模糊。 1、專案src路徑下的.java檔案編譯之後的檔案會存放在WEB-INF/classes路徑下,預設的classpath路徑即為WEB-INF/cla

Vue專案開發非常實用的圖片拖動排序外掛awe-dnd

專案中遇到一個需求; 電商管理平臺新增商品的時候需要上傳或者選擇商品輪播圖展示的圖片,這裡涉及到圖片的排序問題;一開始只能自己寫了一個點選左移或者右移的效果; 後面找到這個元件,能非常簡單的實現拖動排序的效果 安裝依賴包 npm install awe-dn

敏捷專案開發的需求分析

【敏捷專案沒有需求分析嗎?】 在很多人的印象中,敏捷軟體開發是種類似黑客行為的過程,是程式設計師最愛的勾當。不寫文件,不作需求分析,沒有專案經理,做什麼東西完全是程式設計師自己的行為。所以他們認為這樣的過程無法滿足真正大型專案和複雜專案的需要,因此在經過考慮後,放棄了敏捷方法。 專案經理圈子真的是這樣