Git && GitHub

第一章 爲何要學Git?

  • 必點天賦。
  • 必然趨勢。

 

第二章 Git的簡介和安裝

2.1 Git的簡介

  • Git是目前世界上最早進的分佈式版本控制系統。

2.2 版本管理系統能幹什麼?

  • 協同開發。
  • 衝突解決。
  • 版本記錄。
  • 歷史追查。
  • 代碼備份。
  • 版本還原。
  • 權限管理。
  • 分支管理。
  • 代碼審查。

2.3 集中管理型版本管理

  • 經典的集中管理型:CVS、VSS、SVN。
  • 特色:
  • ①實現了大部分開發中對版本管理的需求。
  • ②結構簡單,上手容易。

 

  • 集中管理型版本管理的問題:
  • ①版本管理的服務器一旦崩潰,硬盤損壞,代碼如何恢復?
  • ②程序員上傳到服務器的代碼要求是完整版本,可是程序員開發過程當中想作小版本的管理,以便追溯查詢,怎麼破?
  • ③系統正在上線運行,時不時還要修改bug,要增長好幾個功能須要好幾個月,如何管理幾個版本?
  • ④如何管理一個分佈在世界各地、互不認識的大型開發團隊?

2.4 分佈式版本管理

 

  • 分佈式版本管理的優勢:
  • ①容災能力強。
  • ②本地版本管理。
  • ③異地協做。
  • ④靈活分支。 

2.5 常見的Git工具

2.5.1 命令行工具

2.5.2 IDEA插件

2.5.3 GitHub

2.5.3 Git的圖形化界面

2.6 Git for Windows的安裝

 

 

第三章 Git實戰操做

3.1 設置用戶名和郵箱

3.1.1 準備工做

  • 在G盤新建git-project目錄。

3.1.2 初始化git版本倉庫

  • 命令:
git init

 

  •  示例:

3.1.3 設置項目級別的用戶名和密碼

  • 命令:
git config user.name "須要配置的用戶名"
git config user.email "須要配置的郵箱"

 

  •  示例:

3.1.4 設置系統級別的用戶名和密碼

  • 命令:
git config --global user.name "須要設置的用戶名"
git config --global user.email "須要設置的郵箱"

 

  • 示例:

3.2 提交文件

3.2.1 查看文件狀態

  • 命令:
git status

 

  • 示例:

3.2.2 將文件添加到暫存區

  • 命令:
git add 文件名(或目錄名)

 

  • 示例:

3.2.3 提交文件到本地庫

  • 命令:
git commit -m "註釋"

 

  • 示例:

3.3 查看文件提交記錄

  • 命令:
# 查看歷史記錄
git log 文件名
# 簡易查看歷史記錄
git log --pertty=online 文件名

 

  • 示例:

3.4 回退歷史

  • 命令:
# 回退到上一次提交
git reset --hard HEAD^
# 回退到n次操做
git reset --hard HEAD~n 

 

  • 示例:

 

3.5 版本穿越

  • 命令:
# 查看歷史記錄的版本號
git reflog 文件名(目錄名)
# 版本穿越
git reset --hard 版本號

 

  • 示例:

3.6 還原文件

  • 命令:
# 沒有將修改的文件提交到暫存區,若是將修改的文件提交到了暫存區請先回退到上個版本
git checkout -- 文件名

 

  • 示例:

3.7 刪除文件

  • 命令:
#先刪除文件再git add,git commit提交

 

  • 示例:

3.8 工做區+暫存區+本地庫

  • 工做區:電腦本地硬盤目錄。
  • 暫存區:通常存放在.git目錄下的index文件中。
  • 本地庫:工做區中有個隱藏目錄.git,它就是Git的本地版本庫。

3.9 分支

3.9.1 分支的引入

  • 系統上線了,可是產品經理又提出了新的需求,評估一下工期須要兩個月,可是同時系統正在上線運行,時不時還須要修改bug,如何管理幾個版本?

3.9.2 查看當前分支

  • 命令:
git branch -v

 

  • 示例:

3.9.3 建立分支

  • 命令:
git branch 分支名

 

  • 示例:

3.9.4 切換分支

  • 命令:
git checkout 分支名

 

  • 示例:

 

3.9.5 合併分支

  • 示例:
#先切回須要合併的分支
git checkout 分支名
#合併分支
git merge 另外一個分支名

## 好比須要將dev分支的文件合併到master分支上,那麼命令以下
## git checkout master
## git merge dev

 

  • 示例:

 

3.9.5 衝突

3.9.5.1 衝突的緣由

  • 衝突通常指同一個文件同一位置的代碼,在兩種版本合併時版本管理軟件沒法判斷到底應該保留哪一個版本,所以會提示該文件發生衝突,須要程序員手工判斷解決衝突。 

3.9.5.2 合併時衝突

  • 程序合併時發生衝突系統會提示CONFLICT關鍵字,命令行後綴會進入MERGING狀態,表示此時是解決衝突的狀態。 

 

  •  示例:

 

3.9.5.3 解決衝突

  • 此時經過git diff能夠找到發生衝突的文件及衝突的內容。 

 

  • 示例:

 

 

  • 修改衝突文件內容,再次git add 文件和git commit -m 「提交註釋」提交文件,後綴MERGING消失,代表衝突解決完成。

 

  • 示例:

 

第四章 GitHub簡介、和Git的協同辦公

4.1 GitHub是什麼?

  • GitHub是一個Git項目託管網站,主要提供基於Git的版本託管服務。 

4.2 GitHub的網址

4.3 註冊帳號的注意事項

  • 不要使用163的郵箱,有可能收不到驗證郵件。
  • 較長時間不使用有可能被GitHub凍結帳號。請登陸其客服頁面https://github.com/contact,填寫帳號恢復申請。

4.4 GitHub的使用流程

4.4.1 團隊協做

4.4.1.1 圖解

4.4.1.2 建立本地庫、配置用戶名和郵箱以及提交文件

  • 命令: 
# 建立本地庫
git init
# 配置用戶名和郵箱
git config user.name "用戶名"
git config user.email "郵箱"
# 新建文件bixiejianfa.txt
# 將文件加入到暫存區
git add bixiejianfa.txt
# 提交文件
git commit -m "辟邪劍法"

 

  • 示例: 

4.4.1.3 登陸GitHub,建立項目,增長遠程地址

  • 命令:
# 遠程代碼通常爲origin
# 遠程地址就是GitHub上的項目的地址url
git remote add 遠程代號 遠程地址

 

  • 示例:在GitHub上建立項目 

 

  • 示例:增長遠程地址

4.4.1.4 推送到遠程庫

  • 命令:
# 遠程代號是指遠程連接的代號。
# 分支名是指要提交的分支名稱,好比master
git push 遠程代號 本地分支名

 

  • 示例:

 

4.4.1.5 邀請協做者

  • 示例:

4.4.1.6 clone項目

  • 命令:
git clone 遠程地址 新項目目錄名(能夠省略,若是省略,默認是項目名)

 

  • 示例: 

4.4.1.7 修改完以後,推送項目

  • 命令: 
# 配置user.name 和user.email 
git config user.name "用戶名"
git config user.email "郵箱"
# 修改文件
git add 修改的文件名
# 提交文件
git commit -m "註釋"
# 遠程代碼 git clone以後,遠程代碼默認爲origin
git push 遠程代碼 本地分支

 

  •  示例:

4.4.1.8 拉取項目

  • 命令:
# 遠程代號指的是遠程連接的代號
# 遠程分支名值得是遠程的分支名稱
git pull 遠程代號 遠程分支名

 

  • 示例:

 

4.4.2 團隊外協做

  • 略。

 

第五章 在IDEA中操做Git

  • 略。

 

第六章 Git工做流

6.1 Git開發流程

  • 集中式工做流。
  • GitFlow工做流。

6.2 集中式工做流

  • 像SVN同樣,集中式工做流以中央倉庫做爲項目全部修改的單點實體。全部修改都提交到Master這個分支上。
  • 這種方式與SVN的主要區別就是開發人員有本地庫。Git不少特性並無用到。

6.2 GitFlow工做流

  • GitFlow工做流經過爲功能開發、發佈準備和維護設立了獨立的分支,讓發佈迭代過程更流暢。嚴格的分支模型也爲大型項目提供了一些很是必要的結構。

 

  • 示例:

 

 

  • 示例:

6.2.1 分支的種類

  • 主幹分支 master:主要負責管理正在運行的生產環境代碼。永遠保持和正在運行的生產環境徹底一致。
  • 開發分支 dev:主要負責管理正在開發過程當中的代碼。通常狀況下應該是最新的代碼。
  • 熱修復分支 hot fix:主要負責管理生產環境下出現的緊急修復的代碼。從主幹分支分出,修理完畢並測試上線後,合併到主幹分支。合併完以後,視狀況能夠刪除該分支。
  • 發佈版本分支 release:較大版本上線前,會從開發分支中分出發佈版本分支,進行最後階段的集成測試。該版本上線後,會合併到主幹分支。生產環境運行一段階段穩定後能夠視狀況刪除。
  • 功能分支 feature:爲了避免污染開發分支,會從開發分支獨立出功能分支。開發完成後會合併到開發分支。
相關文章
相關標籤/搜索