1. 程式人生 > 程式設計 >詳解git的基本使用方法

詳解git的基本使用方法

什麼是git?

git是目前世界上最先進的分散式版本控制系統。

git與SVN的最主要區別?

SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而工作的時候用的都是自己的電腦,所以開始工作之前需要從中央伺服器那裡獲取最新的版本,然後開始工作,工作完後,需要把自己所做的工作推送到中央伺服器。集中式版本控制系統必須要聯網才能工作,如果在區域網中,有足夠的寬頻,執行速度夠快,而在網際網路環境下,網速慢通常會導致服務難以進行。

git是分散式版本控制系統,沒有中央伺服器,每個人的電腦是一個完整的版本庫,這樣,工作的時候可不需要聯網,因為版本都在自己電腦上,即每個人的電腦都有一個完整的版本庫,那麼如何實現多人協作呢?比如自己在電腦上修改了檔案A,別人也修改了檔案A,此時,需要把兩人之間各自所做的修改推送給對方,就可以互相看到對方所做的修改了。

在windows上安裝git。

msysgit是windows版的git,如下:

詳解git的基本使用方法

從網上下載一個,預設安裝即可。安裝完後,在開始選單裡找打“Git->Git Bush”如下:

詳解git的基本使用方法

會彈出一個類似命令視窗的東西,則說明git安裝成功。如下:

詳解git的基本使用方法

安裝完成之後,還需要最後一步設定,在命令列輸入git config --list,如果最後兩行資訊和你之前輸入的相同,則完成了git的基本配置。

詳解git的基本使用方法

注意:git config -global引數,有了這個引數,表示這臺機器上所使用的git倉庫都會使用這個配置。

如何操作?

一:建立版本庫。

什麼是版本庫?版本庫又名倉庫,英文名repository,可以簡單的理解為一個目錄,在這個目錄裡面所有檔案都可以被git管理起來,每個檔案的修改,刪除,git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻將檔案“還原”。

建立一個版本看也非常簡單,如下在D盤目錄下新建一個z6t版本庫。

詳解git的基本使用方法

pwd命令用於顯示當前目錄。

通過命令git init把這個目錄變成git可以管理的倉庫,如下:

詳解git的基本使用方法

這時當前目錄下會多一個.git的目錄,這目錄是git用來跟蹤管理版本的,沒事千萬不要改動裡面的檔案,否則會破壞git倉庫。如下:

詳解git的基本使用方法

把檔案新增到版本庫中。

首先要明確,所有的版本控制系統,只能跟蹤文字檔案的改動,比如txt檔案、網頁、所有程式的程式碼等。git也不例外,版本控制系統可以告訴你每次所做的改動,但是圖片,視訊這些二進位制檔案,雖然也能由版本控制系統管理,但沒法跟蹤檔案的變化,只能把二進位制檔案改動串起來,也就是知道圖片從1kb變成了2kb,但是到底改了哪些地方,版本控制也不知道。

下面先看demo演示:

在版本庫z6t目錄下新建一個記事本檔案readme.txt內容如下:

詳解git的基本使用方法

第一步:使用命令git add readme.txt新增到暫存區去。如下:

詳解git的基本使用方法

如果和上面一樣,沒有任何提示,說明已經新增成功了。

第二步:用git commit告訴git把這個檔案提交到倉庫。

詳解git的基本使用方法

現在已經提交了一個readme.txt檔案了,-m後的內容是程式碼提交時的註釋。下面可以通過git status來檢視是否還有其他檔案沒有提交,如下:

詳解git的基本使用方法

說明沒有任何檔案未提交,下面繼續修改readme.txt,內容,比如新增一行內容。

詳解git的基本使用方法

繼續使用git status來檢視下結果,如下:

詳解git的基本使用方法

上面的命令告訴我們readme.txt檔案已經被修改,但是未被提交。注意看中間字的顏色,紅色表面還沒有提交到暫存區,綠色表明已經新增到了暫存區。

接下來想看下readme.txt到底做了什麼修改,如何檢視呢?使用git diff readme.txt如下:

詳解git的基本使用方法

可以看到,readme.txt檔案內容從一行變成了兩行,添加了一行下邊的內容。

知道了對readme.txt檔案做了什麼修改後,就可以放心提交到倉庫了,提交修改和提交檔案和第二步是一樣的(git add 和 git commit)

二:版本回退

如上,我們已經學會了修改檔案,現在繼續對readme.txt檔案進行修改,在增加一行,內容如下:

詳解git的基本使用方法

繼續執行命令如下:

詳解git的基本使用方法

現在對readme檔案做了多次修改,下面我們檢視下歷史記錄,如何查,我們可以使用git log命令。

詳解git的基本使用方法

git log命令顯示從近到遠的日誌,如果嫌上面顯示的資訊太多,可以使用git log --pretty=oneline(千萬注意是oneline,不是online),如下所示。

詳解git的基本使用方法

現在我們想使用版本回退操作,回退到上一個版本,使用什麼命令呢?可以使用git reset --hard HEAD^,如果想回到上上個版本只需要把HEAD^改成HEAD^^以此類推。那如果要回到100個版本前,肯定不方便,我們可以使用git reset --hard HEAD~100即可。回退之前的readme.txt內容如下:

詳解git的基本使用方法

如果想回到上一個版本的操作命令:

詳解git的基本使用方法

可以看到已經回到了上一個版本,可以繼續使用git log來檢視下歷史記錄資訊,如下:

詳解git的基本使用方法

可以看到“新增第三行的內容”已經看不到了,但是現在想回退到最新版本,我們可以通過檢視版本號回退,使用命令方法如下:

git reset --hard 版本號,可以通過git reflog檢視版本號。

詳解git的基本使用方法

通過上面顯示我們可以知道,新增第三行的版本號是05b039a ,現在可以使用命令git reset --hard 05b039a 來恢復,演示如下:

詳解git的基本使用方法

可以看到目前已經是最新版本了,即處於添加了第三行內容 版本,檢視內容:

詳解git的基本使用方法

三:理解工作區與暫存區。

工作區:就是電腦上看到的目錄,(.git隱藏目錄版本除外)。或者以後新建的目錄檔案都屬於工作區範疇。

版本庫(Repository):工作區有一個隱藏的目錄.git這個不屬於工作區,這個是版本庫,這裡面有很多重要的檔案,最重要的就是stage(暫存區),還有git未我們自動建立的第一個分支master,以及指向master的一個指標HEAD。

我們前面說過使用git提交檔案到版本庫有兩步:

第一步:使用git add 把檔案新增進去,實際上就是把檔案新增到暫存區。

第二步:使用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支上。

我們繼續使用demo來演示下:

我們在read.txt再新增一行內容(hello.js)接著在目錄下新建一個lala.txt檔案,內容(啦啦啦,啦啦啦),我們先使用git status來檢視狀態,如下:

詳解git的基本使用方法

現在使用git add 命令把兩個檔案都新增到暫存區中,在使用git status來檢視狀態,如下:

詳解git的基本使用方法

已經新增到暫存區的為綠色字型,未新增的為紅色字型。

接著我們可以git commit一次性提交到分支上,如下:

詳解git的基本使用方法

四:git撤銷修改和刪除檔案操作。

比我現在在readme.txt檔案裡面增加一行內容為(惟沉默是最高的輕蔑。),我們先通過命令檢視如下:

詳解git的基本使用方法

在提交之前,我發現新增的(惟沉默是最高的輕蔑。)內容有誤,所以我得馬上恢復以前的版本,現在我可以有如下的幾種方法可以做修改:

第一:如果我知道要刪掉那些內容的話,直接手動更改去掉那些需要的檔案,然後add新增到暫存區,然後commit掉

第二:我可以按以前的方法直接恢復到上一個版本。使用git reset --hard HEAD^

但是現在我不想使用上面這兩種方法。接著撤銷該怎麼操作呢?首先在做撤銷之前,使用git status檢視當前的狀態。如下所示:顯示已經修改,但沒有新增到暫存區。

詳解git的基本使用方法

可以發現,git會告訴你,git checkout -- file可以丟棄工作區的修改,如下命令:

git checkout -- readme.txt (注意檔名前面必須有空格)

詳解git的基本使用方法

命令git checkout -- readme.txt意思就是把readme.txt檔案在工作區做的修改全部撤銷,這裡有2種情況,如下:

readme.txt自動修改後,還沒有到暫存區,使用撤銷修改就回到和版本庫一模一樣的狀態。另一種情況就是readme.txt已經進人暫存區了,接著又做了修改,撤銷修改就回到新增暫存區後的狀態。

對於上面的第二種情況,繼續做demo來看下,假如對readme.txt新增一行內容為(猛獸總是獨行,牛羊才成群結隊。)

詳解git的基本使用方法

使用git add 新增到暫存區後,接著新增內容(從來如此,便對麼?)通過撤銷命令後讓其回到暫存區的狀態,如下所示:

詳解git的基本使用方法

注意:命令git checkout -- readme.txt中的--很重要,如果沒有--的話,那麼命令就變成了建立分支了。

二:刪除檔案

假如在版本z6t目錄中新增一個檔案666.txt,然後提交。如下:

詳解git的基本使用方法

如上:一般情況下,可以直接在檔案目錄中把檔案刪了,或者使用如上rm命令:rm 666.txt,如果想要在版本庫中徹底刪掉此檔案,可以再執行commit命令提交掉,現在的檔案目錄是這樣的:

詳解git的基本使用方法

只有沒有commit,如果想在版本庫中恢復此檔案如何操作呢?

可以使用如下命令 git checkout -- b.txt,如下所示:

詳解git的基本使用方法

在來看檔案目錄,添加了666.txt檔案了,如下所示:

詳解git的基本使用方法

五:遠端倉庫

在瞭解之前,先註冊github賬號,由於你的git倉庫和github倉庫之間的傳輸是通過SSH加密的,所以需要一點設定。

第一步:建立SSH Key。在使用者目錄下,看看有沒有.SSH目錄,如果有,在看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個檔案,如果有的話,直接跳過此如下命令,如果沒有的話,開啟命令列,輸入如下命令:

ssh-keygen -t rsa -C “[email protected]

詳解git的基本使用方法

結果如下所示:

詳解git的基本使用方法

Id_ras是私匙,不能洩露出去,id_rsa.pub是公匙,可以放心地告訴任何人。

第二步:登入github,開啟“settings”中的SSH Keys頁面,然後點選“Add SSH Key”填上任意title,在Key文字框裡黏貼id_rsa.pub檔案的內容。

詳解git的基本使用方法

點選Add keys,你就應該可以看到已經新增的key。

詳解git的基本使用方法

如何新增遠端庫?

現在的情景是:我們已經在本地建立了一個git倉庫,又想在github建立一個git倉庫,並希望這兩個倉庫進行遠端同步,這樣github的倉庫可以作為備份,其他人又可以通過該倉庫來協作。

首先登陸github上,然後右上角找到“create a new repo”建立一個新的倉庫。如下:

詳解git的基本使用方法

目前,在github上的這個testgit倉庫還是空的,github告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到github倉庫。

現在,根據github的提示,在本地倉庫下執行以下命令,輸入github使用者名稱,密碼:

Git remote add origin https://github.com/xz9594/testgit.git

詳解git的基本使用方法

把本地庫的內容推送到遠端,使用git push命令,實際上就是把當前分支master推送到遠端。由於遠端庫是空的,第一次提交時加上了-u引數,git不但會把本地的master分支內容推送到新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。推送成功後,可以立刻在github頁面中看到遠端庫的內容已經和本地一模一樣了,如下所示:

詳解git的基本使用方法

從現在起,只要本地做了提交,就可以通過如下命令:

詳解git的基本使用方法

把本地master分支的最新修改推送到github上了,現在你就擁有了真正的分散式版本庫了。

如何從遠端庫克隆?

上面我們瞭解了先有本地庫,後有遠端庫,如何管理遠端庫。現在我們想,假如遠端庫有新的內容了,我想克隆到本地來,如何克隆呢?

首先登陸github,建立一個新的倉庫,名字叫做testDemo,如下:

詳解git的基本使用方法

現在,遠端庫已經準備好了,下一步就是使用git clone命令克隆一個本地庫了,如下所示:

詳解git的基本使用方法

接著在本地目錄下生成了testDemo目錄了,如下所示:

詳解git的基本使用方法

六:建立與合併分支。

在版本回退那裡,已經知道每次提交,git都會把他們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在git裡,這個分支叫主分支,即master。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交,所以,HEAD指向的就是當前分支,切換分支即可以理解為切換時間線。

首先,我們建立dev分支,然後切換到dev分支上。如下操作:

詳解git的基本使用方法

git checkout 命令加上-b引數表示建立並切換,相當於如下2條命令

git branck dev
Git checkout dev

Git branck檢視分支,會列出所有當前分支,當前分支前面會新增星號,然後我們在dev分支上繼續做demo,比如我們在readme.txt再增加一行 keep foolish

詳解git的基本使用方法

在kobe分支新增並提交readme.txt

詳解git的基本使用方法

檢視readme.txt

詳解git的基本使用方法

此時切換到master分支並檢視readme.txt

詳解git的基本使用方法

合併kobe分支,git merge kobe:

詳解git的基本使用方法

git merge命令用於合併制定分支到當前分支上,合併後,再檢視readme.txt內容,可以看到,和dev分支最新提交的是完全一樣的,注意上面的Fast-forward資訊,git告訴我們,這次合併是“快進模式”,也就是把master指向dev的當前提交,所以合併速度非常快。合併完成之後,就可以刪除dev分支了,操作如下:git branch -d dev

詳解git的基本使用方法

如何解決衝突?

首先建立一個新分支,比如名字叫做james,在readme.txt新增一行內容keep hungry,然後提交,如下所示:

詳解git的基本使用方法

同樣,現在切換到master分支上來,檢視此時的內容為keep hungry的內容,如下:

詳解git的基本使用方法

此時在readme.txt的最後新增一行內容,內容為keep healthy如下所示:

詳解git的基本使用方法

在add和commit readme.txt後需要在master分支上合併james,如下:

詳解git的基本使用方法

我們再來看下readme.txt的內容如下:

詳解git的基本使用方法

詳解git的基本使用方法

Git 用<<<<,====,>>>>>標記出不同分支的內容,其中<<>>>分支上修改內容後儲存:

詳解git的基本使用方法

檢視分支合併情況,使用git log 如下:

詳解git的基本使用方法

3.分支管理策略

通常合併分支時,git一般使用的是“Fast forward”模式,在這種模式下,刪除分支後會丟掉分支資訊,現在使用帶引數 --no-ff來禁用“fast forward”模式。看下面demo演示:

建立一個kobe分支。修改readme.txt的內容。新增到暫存區。切換回主分支(master)。合併dev分支,使用命令git merge --no-ff -m “註釋” dev檢視歷史記錄

詳解git的基本使用方法

詳解git的基本使用方法

右上圖可見,刪除了“這是一個demo”(在kobe分支做的操作)分支後,原來的版本資訊還存在。

分支策略:首先master主分支應該是非常穩定的,也就是用來發布新版本,一般情況下不允許在上面幹活,幹活一般情況在新建的dev分支上,幹完後,比如要釋出,或者說分支程式碼穩定後可以合併到主分支master上來。

七:bug分支:

在開發中,會經常碰到bug問題,那麼有了bug就需要修復,在git中,分支是很強大的額,每個bug都可以通過一個臨時分支來修復,修復完成後,合併分支,然後將臨時分支刪除掉。

比如在開發中遇到一個404 bug的時候,我們可以建立一個404分支來修復它,但是,當前dev分支上

Git基本常用命令如下:

mkdir: XX(建立一個空目錄XX指目錄名)

pwd: 顯示當前目錄的路徑

git init 把當前的目錄變成可以管理的git倉庫,生成隱藏的.git檔案。

git add XX 把XX檔案新增到暫存區。

git commit -m “XX”提交檔案 -m後面的是註釋

git status 檢視倉庫狀態

git diff XX 檢視XX檔案修改了哪些內容

git log 檢視歷史記錄

git reset -hard HEAD^ 或者git reset -hard HEAD~ 回退到上一個版本 (如果想回退到100個版本,使用git reset -hard HEAD~100)

cat XX 檢視XX檔案內容

git reflog 檢視歷史記錄的版本號id

git checkout --XX把XX檔案在工作區的修改全部撤銷

git rm XX 刪除XX檔案

git remote add origin https://github.com/xz9594/testgit.git關聯一個遠端庫

git push -u (第一次提交要用-u以後不需要)origin master把當前master分支推送到遠端庫

git clone https://github.com/xz9594/testgit.git從遠端庫中克隆

git checkout -b dev 建立dev分支 並切換到dev分支上

git branch 檢視當前所有分支

git checkout master 切換回master分支

git merge dev 在當前分支上合併dev分支

git branch -d dev 刪除dev分支

git branch name 建立分支

git stash 把當前的工作隱藏起來等以後恢復現場後繼續工作

git stash list 檢視所有被隱藏的檔案列表

git stash apply 恢復被隱藏的檔案,但是內容不刪除

git stash drop刪除檔案

git stash pop 恢復檔案的同時也刪除檔案

git remote 檢視遠端庫的資訊

git remote -v 檢視遠端庫的詳細資訊

git push origin master Git會把master分支推送到遠端庫對應的遠端分支上

git 還原push

1. git log

2. git reset --soft 43dc0de914173a1a8793a7eac31dbb26057bbee4

3. git push origin master --force

到此這篇關於詳解git的基本使用方法的文章就介紹到這了,更多相關git使用內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!