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。
接着我們來看一下如何獲取遠程倉庫的項目呢?就比如說我們在一個公司進行開發或者想要從github 上獲取開源項目的話,這時候就得從遠程倉庫上下載項目的代碼,那這個時候就我們就需要使用git clone 命令來進行遠程倉庫上的項目,具體的使用步驟如下。首先進入你得進入一個路徑下,接着找到你要下載的項目的git路徑。最后執行git clone。
二、如何在本地倉庫中進行添加文件?添加的文件如何進行提交呢?如何把本地倉庫修改或者更新的文件進行提交呢?(git add,git commit,git push等命令使用)
接着上面的內容繼續聊聊,我們通過上面的過程在本地構建了一個本地的代碼倉庫,但是接着構建了倉庫之后你肯定得進行項目的開發,這個時候就得在項目中增加文件,第一次新增的文件,在git項目中未被跟蹤的,那這時候你會問啥是未被跟蹤,這個就得聊一聊,git給出的解釋是git倉庫目錄下的文件有兩種狀態,一種是已跟蹤,一種是未跟蹤。已跟蹤的文件就是已經納入了版本控制的文件,在上一次快照中都存在它的記錄,在工作一段時間后, 它們的狀態可能是未修改,已修改或已放入暫存區。簡而言之,已跟蹤的文件就是 Git 已經知道的文件。而未跟蹤的文件就是除了已跟蹤之外的文件都是未跟蹤的。它們既不存在於上次快照的記錄中,也沒有被放入暫存區。 初次克隆某個倉庫的時候,工作目錄中的所有文件都屬於已跟蹤文件,並處於未修改狀態,因為 Git 剛剛檢出了它們, 而你尚未編輯過它們。
編輯過某些文件之后,由於自上次提交后你對它們做了修改,Git 將它們標記為已修改文件。 在工作時,你可以選擇性地將這些修改過的文件放入暫存區,然后提交所有已暫存的修改,如此反復。現在回到之前的問題,現在我們在項目路徑下新增了一個文件,這個時候屬於未跟蹤狀態,未跟蹤的文件是沒有被git快照追蹤,那么就得讓未跟蹤的文件變成跟蹤的文件,這時候我們就得執行git add命令來執行,使文件讓git快照進行追蹤。那么接下來進行驗證一下,我們在項目中增加一個test.txt文件:
現在已經看到文件是未被追蹤的文件,現在通過git add 命令把文件變為追蹤文件。
這個時候我們已經看到在暫存區以及有一個文件,這時候我們想要把該文件提交到本地倉庫。執行git commit命令。
下面我們來看一下提交的結果。
這個時候就已經把項目提交到本地倉庫中了,但是尚未提交到遠程倉庫中,那么我們想提交到遠程倉庫的話就得執行git push 來進行了。git push 后面進行講解。
通過上面的過程就完成了一個文件在本地倉庫的添加以及提交了。下面接着我們來看一下如何執行修改文件的提交以及恢復。
下面我們在test.txt文件中添加一些內容,接着我們來測試一下文件的提交以及恢復。
這時候通過上面的的狀態我們可以看出文件已經被修改了,狀態已經變為modified。一般情況下比如idea開發工具中,新增的文件,沒有進行添加git倉庫中,文件一般都是紅色的。 接着添加到倉庫中的文件就變為綠色的,如果添加到倉庫中並且以及commit的文件一般為白色。接着修改的文件變為藍色。
上面修改的文件,我們要進行提交的話,首先得執行git add 命令,接着執行 git commit 命令。
通過上面的命令已經把修改的文件進行提交了。 下面我們來看一下如何把修改過的文件進行恢復呢?如何把修改過的文件進行commit之后進行恢復呢?
我們來看第一個問題,修改之后的文件是被放到暫存區的,這個時候我們可以使用git restore --staged test.txt 進行文件的恢復,這個時候恢復就恢復到修改的狀態。
這個時候就可以看到文件恢復到之前的狀態了,已經變成修改時的狀態的了。
接着要恢復到未修改之前的狀態,這個時候得需要再執行一下git restore <file>
執行完以上命令之后,就恢復到文件沒有被修改之前的狀態了。以上這兩個步驟在idea開發工具中,在idea中執行一個步驟就可以恢復到未修改版本狀態,點擊test.txt文件右鍵彈出一個框找到local history ----》show history ---》進去之后找到對應的操作歷史記錄找到對應要恢復的版本右鍵有一個Revert 。就可以完成恢復。
接下來我們再來看上面所說的當文件被修改完之后又進行commit了,commit完之后,是已經提交到本地倉庫中的,那這個時候我們要想恢復到未修改之前的狀態。這個時候我們如何進行操作呢?
下面我們就來演示一下吧,隨他去吧,請開始你的表演吧。。。。。
下面我們來看一下如何恢復已經commit的文件。
首先執行git log 命令,找到提交的commit記錄,找到commit 上一個版本提交記錄,進行恢復。假如我們要恢復到圖中標紅的版本。執行以下命令。
這個時候就恢復到上一個commit版本去了。這樣就恢復到修改之前的了。如果這個過程中還新增了其它文件,這時候會把其它文件也弄沒了。這個恢復主要用於單個文件提交恢復,如果多文件提交。想進行恢復,你可以在idea 中,通過local history ---》show localhistory -->>找到提交的要恢復的文件,點擊右鍵Revert就可以恢復了。
三、執行完上面的步驟之后我們肯定想把項目提交到遠程倉庫上,那如何把項目提交到遠程倉庫呢?(git push ,git remote等命令使用)
下面我們就來詳細的介紹一下如何把剛才創建的項目提交到遠程倉庫的,就是從本地倉庫提交到遠程倉庫,提交到遠程倉庫的文件,必須是commit到本地倉庫的,才能夠進行提交到遠程服務器倉庫上。 如果是本地項目要提交到遠程倉庫上的,則首先你得指定一個遠程服務器的倉庫地址才能夠提交的,那具體是如何弄這個遠程服務器倉庫呢?遠程服務器倉庫可以自己找個服務器進行搭建,也可以使用現在網上的遠程服務器倉庫github以及gitee這兩種,現在就以github為例,首先你得在github上建一個Repository。
創建完成之后,我們就得配置在電腦上配置一下遠程倉庫的路徑,那如何配置遠程倉庫呢。首先需要把剛才新增的遠程倉庫的路徑復制下來,在git bash中執行以下命令。
這個時候就添加上了遠程服務器。那么這個時候又需要怎么做才能夠把本地倉庫中的項目提交上去呢?這個時候你就可以執行git push test 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 命令是相反的含義,一個是往服務器上推,一個是往本地倉庫上推(就是本地到遠程拉取)
接着來解釋一下這個命令,git pull test(倉庫對應的名字 git remote -v 指定的) master(分支)。意思就是從遠程倉庫test上的主分支上獲取項目,直接從主分支上進行同步。
其實以上這些命令通過可視化的ide能夠快捷方便的進行操作,比如idea開發工具中在git菜單中能夠快速的進行commit and push ,並且也能夠快速的進行pull,在項目要進行push之前,多進行一下pull。
最后要記住的是,pull 在項目push前不要忘執行。pull 在項目push前不要忘執行。pull 在項目push前不要忘執行。重要的東西說三遍。
好了今天就分享這么多,歡迎大家的指點以及點評。想要了解技術知識學習的可以關注微信公眾號:井壹數碼。