1. 程式人生 > 其它 >git簡介及常用操作說明

git簡介及常用操作說明

學習git之前,我們先學習一個概念:版本控制!

版本控制

什麼是版本控制

版本控制(Revision control)是一種在開發過程中用於管理我們對檔案、目錄或工程等內容的修改歷史,方便檢視更改歷史記錄、備份以便恢復以前的版本的軟體工程技術。

  • 實現跨區域多人協同開發
  • 追蹤和記載一個或者多個檔案的歷史記錄
  • 組織和保護你的原始碼和文件
  • 統計工作量
  • 並行開發、提高開發效率
  • 跟蹤記錄整個軟體的開發過程
  • 減輕開發人員的負擔,節省時間,同時降低人為錯誤

簡單說就是用於管理多個協同開發專案的技術。

沒有進行版本控制或者版本控制缺乏正確的流程管理,在軟體開發過程中將會引入很多問題,如軟體程式碼的一致性,軟體程式碼的冗餘,軟體過程的事物性,軟體開發過程中的併發性,軟體原始碼的安全性,以及軟體的整合等問題。

常見的版本控制工具

主流的版本控制器有如下這些:

  • Git
  • SVN
  • CVS(Concurrent Versions System)
  • VSS(Microsoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

版本控制產品非常的多, 影響力最大最廣泛的是Git和SVN

常見命令

1、git pull origin 分支名

git pull表示從遠端倉庫上拉取更新到本地的遠端倉庫(本地版本庫)和本地倉庫(工作區)中。當你需要提交程式碼時,最好先執行下git pull將遠端倉庫的最新修改更新到本地

2、git push origin 分支名

將本地分支提交到遠端。與git pull origin 分支名聯合使用,在開發中很常用的兩個命令,一般來說,先使用git pull從遠端倉庫拉取最新修改,然後使用git commit -m "提交說明" 與 git push將本地修改提交到指定分支

3、git commit -m "提交說明"

用於本地開發中,將開發環境中的修改提交到本地git倉庫中,一般建議在提交時,加一個提交的說明,表述此次的修改目的。在執行git commit時需要先將本地修改先提交入暫存區,用git add命令,下面將不會重複說明此命令。

4、git fetch

git fetch代表從遠端倉庫上拉取更新到本地的遠端倉庫上,如果需要將本地的遠端倉庫程式碼更新到本地倉庫中,還需要merge命令。
當發現你本地倉庫沒有遠端上的某個分支時,這時候執行下git fetch,遠端倉庫的分支資訊就會被同步了。

5、git merge "分支名"

合併分支,一般在開發中,你有個dev開發分支,然後有個pro釋出分支,你在dev上的改動將會合並(git merge)到pro分支上,pro分支進行打包部署,始終保持pro分支是可打包上線部署的。

6、git branch [分支名]

建立分支,如果沒指定分支名,就會列出本地的所有分支,此處如果發現本地沒有遠端庫的某個分支,記得使用git fetch命令

7、git checkout -b 分支名

建立本地分支並切換到此目錄(或者切換到某分支,此分支已經存在),此命令用來切換分支,如果分支不存在,則會建立分支並切換.

git checkout還有個用處是——覆蓋修改,當執行 "git checkout ." 或者 "git checkout -- " 命令時,會用暫存區全部或指定的檔案替換工作區的檔案。這個操作很危險,會清除工作區中未新增到暫存區的改動。

8、git clone -b [分支名] [專案地址]

將專案拷貝到本地倉庫,並指定為某個分支,與git checkout區別是,git clone並不具備建立分支的能力,如果分支不存在,則會報錯

9、git status [-s]

檢視上次提交後,是否還有修改,加上-s將會提供更簡潔的輸出。

10、git diff

git diff顯示已寫入快取與已修改但尚未寫入快取的改動的區別


以上命令使用頻率很高,需要重點掌握,下面是git的一些不常用,但是比較重要的命令


1、git log

檢視提交歷史,可以通過多種組合引數參看具體提交日誌,此命令比較複雜,且通過git bash檢視不直觀,一般都是通過IDEA等開發工具的視覺化視窗來看。以下是一個示例。

# 看Git專案中三週前且在四月十八日之後的所有提交
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges

2、git stash

將修改暫時先存起來,等需要的時候再拿出來。

3、git rm [-r] [--cached]

git rm為刪除命令,預設情況下,會將檔案從快取區和你的硬碟中(工作目錄)刪除,如果想要在工作目錄刪除,可以使用--cached引數。

或者當你工作目錄中要刪的檔案已經不再了(可能自己手動刪掉了),這時想要把本地倉庫或遠端倉庫的檔案也給刪了,使用--cached引數,刪掉暫存區的檔案,然後進行commit與push即可。

4、git reset [版本號]

當我們用git add將修改新增到暫存區了,通過git reset命令可以將你的指定提交到暫存區的檔案,進行回退。與git rm的區別在於,回退後此命令會將修改還保留在工作區,git rm就直接刪除了。

5、git reset [版本號]

當我們用git add將修改新增到暫

6、git tag

背景:我們有時需要將我們修改的版本進行一個快照,記錄下當前的狀態,避免我接下來修改程式碼的內容後,又需要還原成修改前的程式碼造成的繁瑣。
命令:git tag命令將幫助我們將當前分支程式碼進行了一個快照版本的記錄。
擴充套件:git tag V1.0(建立一個當前分支的名叫V1.0的tag版本)
git tag -a V1.0 -m "第一個版本" (-m可以加上備註資訊)
git show V1.0 (檢視tag的詳細資訊,包括tag號等)
git push origin v1.0(將V1.0的tag推送到遠端)
git checkout v1.0(切換到某個tag)
git tag -d v1.0(本地刪除某個Tag)
git push origin :refs/tags/v1.0(遠端刪除tag)
git tag 檢視所有標籤