git 命令列版本的使用以及相關linux命令
1、安裝git
2、cd 切換目錄到你的專案根目錄下(專案根目錄,懂什麼意思吧?)
3、在專案的根目錄下,使用git init命令建立該專案對應的git初始化配置檔案(該專案對應的git初始化配置是在專案根目錄下的隱藏目錄.git下)
4、使用git config 配置簽名(即作者名與作者郵箱,這樣在git本地庫中就可以知道是誰提交的),有兩種情況:
注意:(1)與(2)必須存在至少一個。當(1)與(2)共存時,優先使用(1)中的簽名。如果沒有(1),則使用(2)中的簽名
(1)基於當前專案的簽名
在專案根目錄下使用兩條命令設定簽名
git config user.name 作者名
git config user.email 作者郵箱
通過這兩條命令設定完簽名,之後在該目錄下新增/修改的檔案都會被標識為 這個簽名,即
其中 tom_pro是我設定的作者名,[email protected]是我隨意設定的郵箱,這兩者構成了Author,標識我是提交這段檔案的作者。
標識可以在該專案根目錄下的.git/config檔案中看到。如圖:
(2)全域性簽名
全域性簽名是基於當前作業系統所登入的使用者的。這裡看不同沒關係,繼續往下看。
在任何目錄下使用兩條命令設定全域性簽名:
git config --global user.name 作者名
git config --global user.email 作者郵箱
該簽名的意義與(1)中的一樣,只不過是當(1)中的簽名不存在時才會使用全域性簽名。
該簽名在當前使用者的工作目錄下(使用cd ~進入)的.gitconfig檔案中配置。如圖:
5、git把檔案從工作區新增到暫存區中
工作區:我們直接操作的專案檔案所在的區域。
暫存區:暫時儲存git將要提交的檔案。作用在於:可以反悔,撤銷新增。
本地儲存庫:從暫存區中提交檔案到本地儲存庫,此時無法撤銷提交,每次提交到這的檔案都會儲存,只不過是不能版本而已。
這一步的使用:
使用以下命令:
git add 工作區中的檔案
可以把當前專案下的指定檔案新增到git暫存區中。
6.git把檔案從暫存區中提交到本地儲存庫中
使用
git commit 暫存區中要提交的檔案
提交後無法撤銷,會在git中生成一個版本。。該檔案以前就存在的,會變為歷史版本存在,也還是可以訪問到的。
7.檢視git狀態
在專案根路徑下使用git status命令可以檢視當前專案的git狀態, 會提示是否 新建的檔案、修改過的檔案
(1)如果使用git status檢視到的檔案是紅色的,說明工作區的檔案與暫存區的檔案不一致。。即:可以使用git add filename 把檔案從工作區新增到暫存區。
(2)如果使用git status檢視到的檔案是綠色的,說明工作區的檔案與暫存區的檔案一致,但暫存區檔案與本地庫指標當前指向的版本不一致。。。即:可以使用git commit filename 把暫存區檔案提交到本地庫中。
8.檢視git日誌
使用git log可以檢視日誌,日誌其實就是之前每次commit的資料,不過有個缺點,就是日誌太長了。
使用git reflog 檢視日誌不僅可以更簡短,而且還可以檢視到head指標,以此來知道怎麼訪問歷史版本。
9.版本回退與前進版本
先講講reset的引數,有三個hard soft mixed
soft:僅僅移動HEAD指標,不會對暫存區、工作區進行任何操作。
mixed:會移動HEAD指標,一會清除暫存區,不會影響工作區。
hard:移動HEAD指標,清除暫存區,把指定版本的資料覆蓋工作區。
《1》使用索引值
(1)git reset --hard 索引值
作用:索引值指定版本資料會覆蓋原來本地檔案,並清空暫存區。
根據索引值既可以回退,也可以前進。
(2)git reset --soft 索引值
《2》使用^符號
git reset --hard HEAD^ 表示從當前版本回退一個版本
git reset --hard HEAD^^ 表示從當前版本回退兩個版本
也就是說,有多少個^,就表示從當前版本回退幾個版本
《3》使用~符號
不用像^一樣根據^的數量來指定回退多少個版本,通過~符號加數字就可以指定回退多少版本。
git reset --hard HEAD~3 表示從當前版本回退3個版本
git reset --hard HEAD~4 表示從當前版本回退4個版本
建議:還是用索引值方式方便,另外兩種方式還是要到日誌中數一下要幾個版本....
10.刪除檔案找回
前提:被刪除檔案在上一個版本已經被提交到本地庫中了,如果沒有達到該前提,則不能找回了。
回退到上一個版本就OK了,這樣就可以找回上個版本的東西,不過要小心當前工作區被覆蓋
11.和本地庫比較檔案(增加了什麼,刪除了什麼)
git diff filename 表示 工作區中filename檔案與暫存區中的filename檔案進行比較,會顯示出哪些行是增加的,哪些行是刪除了的。
git diff HEAD^ filenme 表示與本地庫中相應版本比較,HEAD^的作用就不解釋了,會顯示出哪些行是增加的,哪些行是刪除了的。
12、分支操作
(1)建立分支
git branch 分支名
使用上面的命令則會建立名字為指定名的分支(其實就是複製一份倉庫裡面的所有版本資料到該分支,無論怎麼操作這個分支,都不會影響原來的master分支)
(2)檢視所有分支
git branch -v
如圖所示,分支名前面帶*號則表示當前所處的分支是哪個。
(3)切換分支
git checkout 分支名
切換到指定分支名的分支,沒啥好說的。
(4)合併分支
首先,當前分支要切換到要被合併的分支上。
比如,有master與hot_fix兩個分支,其中,hot_fix要合併到master上,那麼當前分支就需要切換到master,合併後hot_fix分支就消失了。其實原理與提交到本地庫類似。
命令:git merge 分支名
比如:使用git merge hot_fix,當前處於master分支,那麼意思就是把hot_fix分支的內容合併到master上
(5)解決合併衝突問題
什麼是合併衝突?意思就是,合併的兩個分支中,同一個檔案的同一行在不同分支中都被修改了,此時就會出現合併衝突。
當出現衝突時,衝突所在位置的檔案會變為如下圖所示:
這就需要使用者自己手動選擇或者修改自己想要哪個分支的了(別忘了把git衝突標記符號刪了,即<<<<<<<< =========>>>>>>>>)
具體解決衝突的步驟如下:、