git 常規發布流程


一、Git基本概念

  1. Git是分布式的版本管理系統,每台機器都可以基於遠程中心服務器擁有自己的版本,如圖: 
    這里寫圖片描述
  2. 遠程中心服務器一般叫做Origin repository。
  3. 下面來看一下本地計算機包含哪些內容,圖片來自於Git官網,包含三個區域: 
    (1) 工作目錄(working Directory):我們肉眼能夠看到的目錄及相應的文件; 
    (2) 暫存區(Staging Area,也有叫Index):中間過渡區域,可以通過git add命令將工作目錄文件放入該區域; 
    (3) 版本庫(Repository):存放版本、分支、Commits的相關信息,通過git commit命令將Staging Area區域的內容放在版本庫中;版本庫的信息以文件的形式存放在工作目錄下的.git隱藏文件夾中; 
    這里寫圖片描述
  4. 命令集關系,圖片來源於http://www.ruanyifeng.com/blog/2014/06/git_remote.html 
    這里寫圖片描述

二、Git前期准備

  1. 找到GitHub中項目地址,點擊Clone or download按鈕,獲取Clone地址
  2. 由於Clone是通過SSH進行傳送的,所以需要生成你機器的認證信息,生成SSH 認證信息,輸入如下代碼,一路回車: 

    完成后進入到存儲key的文件: 
    cat ~/.ssh/id_rsa.pub 
    copy public key,放在GitHub – setting – SSH and GPG keys
  3. 開始Clone,clone前先確認項目存放位置,並進入到相應目錄: 
    juwankui@ubuntu:~/workspace$ git clone git@github.com:wankuiju/hello-world.git 
    進行clone時會提示如下信息,輸入yes, 
    這里寫圖片描述
  4. 項目clone完成后,自動創建項目文件夾,我們現在先進入到項目目錄: 
    cd hello-world 
    通過ls –al 可以看到項目目錄下存在一個.git的隱藏文件夾,就是我們剛才提到的用於存放當前工作空間的版本信息。

三、不涉及到協作、分支等因素的純練習內容(不可用於實際項目)

  1. 只有在項目第一次從遠端下載到本地計算機時才采用clone方式,在后面我會介紹,項目已經存在的情況下,如何根據派發下來的任務進行分支相關的操作,這次暫且不說;
  2. 在當前項目目錄下新增一個文件名為test_add的文件,此時我們先不碰觸遠程版本庫,只在本地計算機內玩耍,那么如下圖: 
    這里寫圖片描述 
    拿剛才我們新建的test_add文件為例來看一下,文件創建完成后: 
    (1) git status看一下本地文件狀態,其實git的說明已經非常清晰明了,平時如果出現問題認真看提示說明,就能解決一些問題,如下圖告訴我們這個新文件還沒有被track,就是沒有和版本產生關系,可以通過git add filename,我一般使用 git add .來操作當前目錄下所有文件: 
    這里寫圖片描述 
    (2) git add 將test_add納入版本跟蹤,隨后再次git status,如下圖,文件已經進入staging area: 
    這里寫圖片描述 
    (3) git commit 將test_add納入本地版本庫,隨后執行git status 查看狀態 
    這里寫圖片描述
    可以看到由於我的本地計算機第一次使用git commit,所以提示需要設置郵箱和用戶名(來至GitHub注冊信息),按照提示操作,替換成你的信息即可: 
    這里寫圖片描述
    (4) 到此,我們在本地玩的很痛快,下一步就需要和遠程倉庫進行交互了,通過git push將你的版本信息提交到遠程倉庫(origin repository),我們當前操作的是master分支,一般開發過程中不會直接操作master的。 
    這里寫圖片描述

四、 模仿實際項目的操作

假設我們已經根據上一章的clone方法,將遠程倉庫(origin repository)中的項目下載本地(默認clone遠程的master分支),還有一點需要注意,我們一般不會直接在master主分支上進行項目操作,那怎么辦,可以在遠程倉庫中基於master分支建立一個develop分支,用於開發工作。

1. git branch –all 查看分支

查看遠程版本庫和本地版本庫中的分支信息,目前我本地只有一個分支,分支前面的“*”代表本地當前分支,遠程倉庫有兩個分支,並且遠程倉庫當前分支為origin/master(即 遠程倉庫中的/master分支): 
這里寫圖片描述

2. git branch develop創建develop分支

這里寫圖片描述

3. git checkout develop切換到develop分支

我們一般使用git checkout –b develop 一條語句來實現創建和切換到指定分支的操作,此處是為了演示。 
這里寫圖片描述

4. 保證本地develop分支最新

通過執行git fetch(從遠程倉庫中拉取所有分支信息到本地),git rebase origin/develop(將拉取的origin/develop的內容合並到本地當前分支),這樣就保證當前分支develop同步於遠程分支。

5. 基於本地develop創建你自己的開發分支

6. 進行你該干的事情吧

真正屬於我們的開發分支已經創建完了,現在你可以為所欲為的修改你的代碼了。

7. 將你修改的內容提交到本地版本庫

8. 再次保證你當前分支版本為最新的

通過執行git fetch -p(從遠程倉庫中拉取所有分支信息到本地,-p就會在本地刪除遠程已經刪除的分支),git rebase origin/develop(將拉取的origin/develop的內容合並到本地當前分支),這樣就保證當前分支同步於遠程develop分支。

9. 將你的分支提交到遠程倉庫

通過執行git push origin feature/2將此分支提交到遠程倉庫,如果已經提交過,在保證你的版本庫最新的情況下執行git push origin feature/2 –f 
這里寫圖片描述

10. 將遠程倉庫中你的分支合並到遠程倉庫的develop中(origin/develop)

一般由管理員或開發經理負責,統一在github上進行操作。

11. 解決沖突

如果遠程倉庫的develop分支和我們修改了同一個文件,在調用git rebase origin/develop 
命令時就會存在沖突的情況,如下圖 
這里寫圖片描述
(1) 找到沖突文件,並刪除沖突內容,主要是<<<<,==== ,>>>>三行的內容 
這里寫圖片描述
(2) 執行git add . 命令 
(3) 執行git rebase –continue

12. 如何用本地版本庫文件覆蓋工作目錄文件

git checkout – bad_filename 可以指定分支,默認為當前分支

13. 將commit到本地版本庫的內容撤銷

通過git log找到要退回的sha(commit后面的一長串字符),記住一定是要退回的sha,不是當前的sha,執行git reset sha(commit后面的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM