1. 程式人生 > >git 命令學習

git 命令學習

    git 主要用於程式碼或者檔案的一個分散式倉庫。可以進行版本控制,實現程式碼或者檔案不同版本的控制,一般主要用於程式碼,比如檔案doc之類的效果不是特別好。既然說到版本控制,其實版本控制的工具也有很多,比如svn之類的等等,其實svn就可以做到版本控制了,為嘛還會有這個git呢,並且git現在還比較流行,主要歸於git是一個分散式的版本控制工具。svn不是分散式的,svn是一個伺服器,其它本地與一箇中央伺服器(svn伺服器)進行互動。git則不然,git是在本地所有電腦上都構建了一個本地的倉庫,一開始進行的提交都是在本地倉庫下進行的,最後才使用(git push)同步到遠端倉庫上。

準備工作

 在學習git命令之前,得確保你電腦上已經安裝了git客戶端,git客戶端的下載路徑是https://git-scm.com/download/win。下載之後在系統上進行安裝。

命令使用

一、如何把本地的專案變為一個git倉庫?如果從遠端倉庫建立一個本地倉庫?(主要講解git init 命令以及 git clone的使用)

首先我們來看一下如何讓本地專案變為一個git倉庫,最後並提交到遠端倉庫上的,就比如我現在有一個專案,我想進行提交到到遠端倉庫上提供給其它人一起共享開發,這個時候,啟動git bash,進入到git bash中,找到你的專案的路徑,進入到專案的根路徑下或者根目錄下,執行命令 git init。

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/(master) $ cd pf4jdemo
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ pwd
/c/Users/Sharplee/Desktop/pf4jdemo
Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $git init

接著我們來看一下如何獲取遠端倉庫的專案呢?就比如說我們在一個公司進行開發或者想要從github 上獲取開源專案的話,這時候就得從遠端倉庫上下載專案的程式碼,那這個時候就我們就需要使用git clone 命令來進行遠端倉庫上的專案,具體的使用步驟如下。首先進入你得進入一個路徑下,接著找到你要下載的專案的git路徑。最後執行git clone。

Sharplee@DESKTOP-5H01CFF MINGW64 /d
$ git clone https://github.com/591studybar/springbootpf4jdemo.git

二、如何在本地倉庫中進行新增檔案?新增的檔案如何進行提交呢?如何把本地倉庫修改或者更新的檔案進行提交呢?(git add,git commit,git push等命令使用)

接著上面的內容繼續聊聊,我們通過上面的過程在本地構建了一個本地的程式碼倉庫,但是接著構建了倉庫之後你肯定得進行專案的開發,這個時候就得在專案中增加檔案,第一次新增的檔案,在git專案中未被跟蹤的,那這時候你會問啥是未被跟蹤,這個就得聊一聊,git給出的解釋是git倉庫目錄下的檔案有兩種狀態,一種是已跟蹤,一種是未跟蹤。已跟蹤的檔案就是已經納入了版本控制的檔案,在上一次快照中都存在它的記錄,在工作一段時間後, 它們的狀態可能是未修改,已修改或已放入暫存區。簡而言之,已跟蹤的檔案就是 Git 已經知道的檔案。而未跟蹤的檔案就是除了已跟蹤之外的檔案都是未跟蹤的。它們既不存在於上次快照的記錄中,也沒有被放入暫存區。 初次克隆某個倉庫的時候,工作目錄中的所有檔案都屬於已跟蹤檔案,並處於未修改狀態,因為 Git 剛剛檢出了它們, 而你尚未編輯過它們。

 

 編輯過某些檔案之後,由於自上次提交後你對它們做了修改,Git 將它們標記為已修改檔案。 在工作時,你可以選擇性地將這些修改過的檔案放入暫存區,然後提交所有已暫存的修改,如此反覆。現在回到之前的問題,現在我們在專案路徑下新增了一個檔案,這個時候屬於未跟蹤狀態,未跟蹤的檔案是沒有被git快照追蹤,那麼就得讓未跟蹤的檔案變成跟蹤的檔案,這時候我們就得執行git add命令來執行,使檔案讓git快照進行追蹤。那麼接下來進行驗證一下,我們在專案中增加一個test.txt檔案:

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git status

現在已經看到檔案是未被追蹤的檔案,現在通過git add 命令把檔案變為追蹤檔案。

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git add test.txt

這個時候我們已經看到在暫存區以及有一個檔案,這時候我們想要把該檔案提交到本地倉庫。執行git commit命令。

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git commit --m "第一次提交"

下面我們來看一下提交的結果。

 

 

這個時候就已經把專案提交到本地倉庫中了,但是尚未提交到遠端倉庫中,那麼我們想提交到遠端倉庫的話就得執行git push 來進行了。git push 後面進行講解。

通過上面的過程就完成了一個檔案在本地倉庫的新增以及提交了。下面接著我們來看一下如何執行修改檔案的提交以及恢復。

下面我們在test.txt檔案中新增一些內容,接著我們來測試一下檔案的提交以及恢復。

 

這時候通過上面的的狀態我們可以看出檔案已經被修改了,狀態已經變為modified。一般情況下比如idea開發工具中,新增的檔案,沒有進行新增git倉庫中,檔案一般都是紅色的。   接著新增到倉庫中的檔案就變為綠色的,如果新增到倉庫中並且以及commit的檔案一般為白色。接著修改的檔案變為藍色。

上面修改的檔案,我們要進行提交的話,首先得執行git add 命令,接著執行 git commit 命令。

通過上面的命令已經把修改的檔案進行提交了。 下面我們來看一下如何把修改過的檔案進行恢復呢?如何把修改過的檔案進行commit之後進行恢復呢?

我們來看第一個問題,修改之後的檔案是被放到暫存區的,這個時候我們可以使用git restore --staged test.txt 進行檔案的恢復,這個時候恢復就恢復到修改的狀態。

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $git restore --staged test.txt

這個時候就可以看到檔案恢復到之前的狀態了,已經變成修改時的狀態的了。

接著要恢復到未修改之前的狀態,這個時候得需要再執行一下git restore <file>

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $git restore  test.txt

執行完以上命令之後,就恢復到檔案沒有被修改之前的狀態了。以上這兩個步驟在idea開發工具中,在idea中執行一個步驟就可以恢復到未修改版本狀態,點選test.txt檔案右鍵彈出一個框找到local history ----》show history ---》進去之後找到對應的操作歷史記錄找到對應要恢復的版本右鍵有一個Revert 。就可以完成恢復。

接下來我們再來看上面所說的當檔案被修改完之後又進行commit了,commit完之後,是已經提交到本地倉庫中的,那這個時候我們要想恢復到未修改之前的狀態。這個時候我們如何進行操作呢?

下面我們就來演示一下吧,隨他去吧,請開始你的表演吧。。。。。

下面我們來看一下如何恢復已經commit的檔案。

首先執行git log 命令,找到提交的commit記錄,找到commit 上一個版本提交記錄,進行恢復。假如我們要恢復到圖中標紅的版本。執行以下命令。

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git reset --hard 34620dcd7f5eda837a13e29cecc670b55ca5483e
HEAD is now at 34620dc 第一次提交

這個時候就恢復到上一個commit版本去了。這樣就恢復到修改之前的了。如果這個過程中還新增了其它檔案,這時候會把其它檔案也弄沒了。這個恢復主要用於單個檔案提交恢復,如果多檔案提交。想進行恢復,你可以在idea 中,通過local history ---》show localhistory -->>找到提交的要恢復的檔案,點選右鍵Revert就可以恢復了。

三、執行完上面的步驟之後我們肯定想把專案提交到遠端倉庫上,那如何把專案提交到遠端倉庫呢?(git push ,git remote等命令使用)

下面我們就來詳細的介紹一下如何把剛才建立的專案提交到遠端倉庫的,就是從本地倉庫提交到遠端倉庫,提交到遠端倉庫的檔案,必須是commit到本地倉庫的,才能夠進行提交到遠端伺服器倉庫上。 如果是本地專案要提交到遠端倉庫上的,則首先你得指定一個遠端伺服器的倉庫地址才能夠提交的,那具體是如何弄這個遠端伺服器倉庫呢?遠端伺服器倉庫可以自己找個伺服器進行搭建,也可以使用現在網上的遠端伺服器倉庫github以及gitee這兩種,現在就以github為例,首先你得在github上建一個Repository。

建立完成之後,我們就得配置在電腦上配置一下遠端倉庫的路徑,那如何配置遠端倉庫呢。首先需要把剛才新增的遠端倉庫的路徑複製下來,在git bash中執行以下命令。

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master) $ git remote add test https://github.com/591studybar/test.git

這個時候就新增上了遠端伺服器。那麼這個時候又需要怎麼做才能夠把本地倉庫中的專案提交上去呢?這個時候你就可以執行git push test master 來進行把本地專案上傳到遠端伺服器倉庫中,解釋一下這個命令 git push test(是新增遠端倉庫伺服器的名字) master (遠端倉庫上的主分支,分支會在後面章節進行解釋)

下面來執行一下這個命令。

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master)$git push test master

在上面的過程中會提示輸入使用者名稱密碼,輸入github的使用者名稱密碼即可。也可以使用配置檔案中進行一個配置,進而能夠進行全域性的使用者名稱密碼的控制。執行完成之後,我們來進行一下驗證。

這個時候我們可以看到已經提交上去了。

如果是使用git clone 命令從遠端倉庫上下載一個專案的話,這個時候不用配置遠端倉庫地址,直接執行git remote -v 命令來查詢遠端倉庫的名字,接著提交程式碼的時候直接執行git push xxx(倉庫地址對應名字git remote -v 指定的)  master (分支)。

四、如果遠端倉庫有其它人進行提交我們如何進行同步呢?(git pull命令使用)

最後我們再來看一下git pull 命令,有push 肯定得有一個pull命令。pull命令主要用於從遠端倉庫上有檔案被修改或者新增,這個時候本地沒有,得先到伺服器上進行pull一下,從伺服器上拉取一下。拉到本地倉庫中,這樣就不會造成本地倉庫和遠端倉庫不一致的情況,建議每次提交程式碼的時候都進行一個git pull,因為這個專案不止一個人在開發,由多個人一起協同開發,必須做到每次再提交程式碼前都pull一下,把遠端變動同步到本地倉庫。那麼這個命令如何執行呢?其實git pull 命令和git push 命令是相反的含義,一個是往伺服器上推,一個是往本地倉庫上推(就是本地到遠端拉取)

Sharplee@DESKTOP-5H01CFF MINGW64 ~/Desktop/pf4jdemo (master)$git pull test master

接著來解釋一下這個命令,git pull test(倉庫對應的名字 git remote -v 指定的) master(分支)。意思就是從遠端倉庫test上的主分支上獲取專案,直接從主分支上進行同步。

 

其實以上這些命令通過視覺化的ide能夠快捷方便的進行操作,比如idea開發工具中在git選單中能夠快速的進行commit and push ,並且也能夠快速的進行pull,在專案要進行push之前,多進行一下pull。

最後要記住的是,pull 在專案push前不要忘執行。pull 在專案push前不要忘執行。pull 在專案push前不要忘執行。重要的東西說三遍。

好了今天就分享這麼多,歡迎大家的指點以及點評。想要了解技術知識學習的可以關注微信公眾號:井壹數碼。

&n