後端---git常用命令和使用順序

Git基本瞭解

git命令是一些命令行工具的集合,它可以用來跟蹤,記錄文件的變動。比如你可以進行保存,比對,分析,合併等等。這個過程被稱之爲版本控制。已經有一系列的版本控制系統,比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。

Git是分佈式的,這意味着它並不依賴於中心服務器,任何一臺機器都可以有一個本地版本的控制系統,我們稱之爲倉庫。如果是多人協作的話,你需要還需要一個線上倉庫,用來同步信息。這就是GitHub, 騰訊雲蜂巢的工作。

 

本章基礎篇主要講解一些Git代碼提交流程和Git基礎命令的使用。

 

一、Git版本分支管理

以下是一個比較基本的分支管理示範,每個公司的項目管理運作不同,分支管理也有各自的特色,但萬變不離其宗。

1) dev分支用於日常開發

2) 當有新版本需要發佈時,把dev代碼合併到release分支做集成測試,並等待發布

3) release分支進入bug修復階段

4) 如果在release分支發現bug,那麼在release分支進行修改,並使用git cherry-pick把修復bug的commit合併到release分支上

(cherry-pick與merge不同,它的合併是以commit爲單位而非整個branch)

完成後,release分支上所有代碼改動(除版本號之外)都應該已經合到了dev分支上

5) release分支測試完成後,發佈到線上環境

6) 並且打上tag,合併到master分支上

7) 如果在線上出現bug,那麼在master上hot fix修復

8) 出現hot fix並修復後,需要重新把hot fix的代碼合併到dev以及release分支中去使代碼保持一致

 二、Git基本命令彙總

1.查看本地文件狀態

git status  —-查看本地、本地倉庫、緩存(stash)的文件修改狀態

—紅色 代表本地工作空間的文件修改

—藍色 代表提交到本地倉庫中的文件(git add .)

 

2.切換版本/覆蓋當前修改文件

git branch - 查看當前版本

git branch -a 查看所有版本

git checkout XXX(版本名)  —-切換到遠程庫中XXX版本

git checkout filepath    —覆蓋當前修改的文件

git checkout .           -覆蓋當前所有修改文件

 

3.從遠程庫獲取最新代碼

git remote -查看遠程庫名稱

git remote -v  

git remote show XXX(遠程庫名)

git fetch — 從remote端拉取最新代碼

git pull XXX(遠程庫名) XXX(分支名)  -把拉取的最新代碼跟當前工作空間合併

git rebase —把遠程拉回的代碼和本地合併

4.緩存本地代碼

當要切換到其它版本時,想保存在當前版本修改的文件:在切換前做

git stash   —-把本地修改過不需要提交的文件放入緩存

git checkout XXX(版本)   —切換庫版本

切回原來的庫,把文件從stash緩存中拿出來

git stash pop — 從緩存中拉出

5.提交遠程庫

git add .

git commit -m ''

git remote 查看遠程關聯名稱

git push remote的名稱 本地master

6.處理衝突

git fetch 拉取最新工程

git pull XXX(遠程庫名) XXX(分支名)  -把拉取的最新代碼跟當前工作空間合併

衝突產生後,去工作空間修改後,>>>新代碼===老代碼<<<,保留最終代碼,刪除提示符,重新提交。

7.把本次提交的內容提交到其他分支(比如發佈時bug的修改)

git cherry-pick commitId

8.建議執行順序

git status 查看修改狀態

git checkout filename 放棄某文件的修改。

git stash 儲存修改

git fetch 拉取最新工程

git rebase 與本地分支合併

git stash pop 彈出儲存文件,此時新文件可能會與你的文件產生衝突,解決衝突。

git add filename 添加某個修改文件

git add . 提交所有加點

git reset HEAD filename 回滾指定文件,回滾所有加點:"git reset HEAD . "

git commit -m''

git push 本地remote遠程分支名,本地分支名

例我的本地分支爲master 遠程remote 別名爲 origin 則提交爲git push origin master

9.切換HEAD

git reflog --查看HEAD記錄

git reset --hard HEAD^       //切換到之前一個HEAD 

git reset --hard fad4462      // 切換到某個已經回退的HEAD

10.刪除 local branch

git branch -d <branch_name>

 

 

最後 git pull 和git commit命令的順序

我的建議是: 
1.在本地修改與遠程代碼無衝突的情況下,優先使用:pull->commit->push 
2.在本地修改與遠程代碼有衝突的情況下,優先使用:commit->pull->push

那麼我們怎麼去確定是否有衝突呢? 
一般我們在合作開發一個項目的過程中,都會有分工,有時會兩個人同時修改一個類,有時整個類都是你自己在開發。 
如果都是自己在開發的類,當然優先使用pull->commit->push,爲什麼我更傾向這種方式呢,因爲這樣會減少Git沒有必要的merge。

如果有衝突的情況下,先pull了會出現什麼問題呢? 
如果你的判斷失誤,在本地修改與遠程代碼有衝突的情況下,先執行了git-pull,即使是這樣也不用擔心,git會給你一個錯誤提示,這時候你再去執行commit->pull->push也是沒有問題的。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章