本篇文章中給大家帶來了關于git版本管理的相關知識,版本管理工具能夠紀錄每次的修改,只要提交到版本倉庫,就可以找到之前任何時刻的狀態,希望對大家有幫助。
git是一個“分布式版本管理工具”。
版本管理工具能夠紀錄每次的修改,只要提交到版本倉庫,就可以找到之前任何時刻的狀態。
我們在寫東西的時候都用過撤消這個功能,但是撤消只能回撤有限步,通常關閉編輯軟件后再重新打開,此時的撤銷紀錄都已被清空了。而“版本管理工具”則不同,它能記錄每次的修改,只要提交到版本倉庫,就可以找到之前任何時刻的狀態。
創建倉庫
安裝git軟件后,在任意目錄下創建一個新文件夾,打開,然后執行git init來創建新的git倉庫(該命令將創建一個名為.git的隱藏子目錄)。
檢出倉庫
執行命令git clone + 遠程項目地址,用來克隆遠端服務器上的倉庫。
Git狀態
Git有三種狀態,分別是已提交(committed)、已修改(modified)、已暫存(staged)。
- 已修改(modified):已修改表示修改了文件,但還沒保存到數據庫中。
- 已暫存(staged):表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。
- 已提交(committed):數據已經安全的保存在本地數據庫中。
Git的三種狀態分別對應本地倉庫的三個工作流,本低倉庫是由git維護的三棵樹組成。
- 第一個是工作目錄,持有實際文件,增刪文件和內容;
- 第二個是暫存區(Index),像個緩存區域,臨時保存改動。輸入git add+filename,此次改動就放到了暫存區。
- 第三個是HEAD,指向最后一次提交的結果。輸入git commit命令,此次改動就放到了本地倉庫。commit之后的可以稱為一個版本。
git基本工作流程:
- 提出更改(添加到暫存區)
使用命令git add (針對特定文件)或git add *(針對所有文件)可以提出更改(把它們添加到暫存區)。 - 提交改動
使用命令git commit -m “代碼提交信息” 來實際提交改動,執行完后改動就提交到了HEAD,但是還沒到遠端倉庫。 - 推送改動
使用命令git push origin master 將改動提交到遠端倉庫master分支(通常不會直接提交到master分支,而是推送到自己的分支,核對無誤后再進行merge)。
分支
前面提到了master分支,那么如何直觀的了解分支呢?
分支是用來將特性開發絕緣開來的。在創建倉庫的時候,master是“默認”分支。在其他分支上進行開發,完成后再將它們合并到主分支上。
git branch test1 | 創建一個名字為test1的分支。 |
---|---|
git checkout test1 | 切換當前分支到test1 |
git checkout -b test1 | 創建一個叫做“test1”的分支,并切換過去。 |
git checkout master | 切換回主分支。 |
git branch -d test1 | 把新建的分支刪掉。 |
git push origin | 將分支推送到遠端倉庫。 |
git merge test | 合并分支。 |
更新與合并
使用命令git pull “遠程分支名” 從遠程獲取代碼并合并到本低的版本(在工作目錄中獲取(fetch)并合并(merge)遠端的改動)
使用命令git merge “分支名” 把合并其他分支到當前分支。
前面的兩種情況,git都會嘗試去自動合并改動。但合并可能會出現沖突(conflicts),需要手動修改文件來合并這些沖突。改動后執行git add 將它們標記為合并成功。在合并改動之前,可以使用git diff
替換本地改動
如果操作失誤,可以使用命令git checkout – 替換掉本地改動。該命令會使用 HEAD中的最新內容替換掉工作目錄中的文件(已添加到暫存區的改動以及新文件都不會受到影響)
遠程倉庫的移除和重命名
將test重命名為test1:git remote rename test test1
移除遠程倉庫test1: git remote rm test1
撤銷操作
取消暫存的文件:git reset filename
撤銷對文件的修改:git checkout –filename
歷史紀錄
使用git log可以得到本地倉庫的歷史記錄。
使用命令git log –author=bob來只看某個人的提交記錄。添加一些參數來修改輸出,從而得到自己想要的結果。
查看哪些文件改變了: git log –name-status
推薦學習:《git》