本文內容要點:
本地版本庫
創(chuàng)建版本庫
理解工作區(qū)缘挽、暫存區(qū)
添加文件到版本庫
提交版本
更新版本
撤銷文件修改
刪除文件
忽略文件
文件版本歷史與文件比對
版本回退
臨時存儲
1.本地版本庫
本地:可以理解為自己正在使用的電腦;
版本庫(repository):就是文件倉庫恬汁,在開發(fā)中就是我們的代碼根目錄就設定為文件倉庫闸翅,然后里面的文件就可以通過Git來管理再芋,Git對這個倉庫的各個文件的修改、添加坚冀、刪除等的歷史記錄都會記錄起來方便進行任何時候的歷史查看济赎、文件恢復還原等。一般地一個項目就用一個版本倉庫來管理
2.創(chuàng)建版本庫
在項目根目錄右鍵,出現(xiàn)Git相關的菜單司训,選擇Git Create repository here...
华蜒,確定后,目錄下面就會多了一個.git的文件夾(如果文件夾設置為隱藏可以見的話)豁遭,表示該代碼倉庫在本機建立成功了,該文件夾就是保存Git相關的版本歷史信息的贺拣,注意不要刪除也不要改動蓖谢!(刪除了該文件夾版本庫的歷史就都沒有了哦)
3.理解工作區(qū)、暫存區(qū)
工作區(qū):就是我們直接編寫代碼的地方譬涡,理解就是代碼倉庫的根目錄下面我們在各個編寫代碼的文件和目錄
暫存區(qū):后面我們會講到版本的Commit闪幽,也就是把代碼提交形成一個版本記錄,那么在工作區(qū)和形成版本中間涡匀,有一個中間狀態(tài)盯腌,叫做暫存區(qū),是指把文件暫時存在這個區(qū)域陨瘩,通過commit操作后腕够,代碼會提交到版本庫默認分支,形成版本記錄舌劳。
4.添加文件到版本庫
我們在目錄下面建立我們所需的各個代碼文件帚湘,操作如下:創(chuàng)建一個readme.md的文件,然后打開文件甚淡,在里面打字:初始版本庫成功
代碼編輯完畢后大诸,我們在根目錄下單擊右鍵>進入Git菜單:TortoiseGit > Add,把文件選中贯卦,這個時候就相當于把我們需要版本庫管理的文件添加到了暫存區(qū)
這一步其實也可以和下一步:提交版本(commit)合并一起處理的
5.提交版本(commit)
代碼編輯完畢后资柔,提交到暫存區(qū)后,需要形成一個版本記錄撵割,那么我們需要執(zhí)行版本提交贿堰。
執(zhí)行操作如下:在根目錄中單擊右鍵 > Git Commit >master(master是我們這個版本庫的默認的分支名,分支在后續(xù)的文章我們會介紹到)
執(zhí)行該命令后睁枕,會彈出如下界面官边,剛才上一步添加文件到版本庫,如果沒有添加的話外遇,這個時候注簿,里面會列出這些文件,勾選這個文件跳仿,就會把這個文件添加到版本庫(也就是上面一步可以和這一步一起做)诡渴,執(zhí)行提交后就會形成版本記錄了
有一個地方需要注意的是:每次commit都要填寫版本的說明信息等,否則提交不了哦:
提交出現(xiàn)如下狀態(tài),表示本地版本庫提交成功(并且一般情況下這個時候根目錄下面已經提交成功的文件會出現(xiàn)綠色勾):
6.更新版本
我們的代碼項目中每個文件代碼都是經常更新的妄辩,那么我們接下來編輯更新一下我們的readme.md文件惑灵,編輯保存后,該文件在目錄下面會有一個紅色的嘆號眼耀,表示更改過這個文件英支,并且還沒有提交到版本庫:
我們在根目錄下面同樣執(zhí)行 單擊右鍵 > Git Commit ->master(這一步的操作和上一步是一樣,只是默認已經在版本庫管理的文件會自動勾選中)哮伟,同樣添加提交信息干花,點擊commit后,即可更新提交版本成功楞黄。
7.撤銷文件修改
有些代碼文件池凄,我們修改了之后,發(fā)現(xiàn)改得亂七八糟了鬼廓,這個時候我想重新再來修改過肿仑,我可以選擇一個一個文件改回來原來樣子,但是這樣明顯很費勁啊碎税,幸好Git提供了一個很好的方案:Revert(恢復)尤慰,也就是把工作區(qū)設置為版本庫最后的版本狀態(tài)。如下操作:我們先修改一下我們的這個readme.md文件蚣录,保存后割择,我們在根目錄上單擊右鍵 > TortoiseGit > Revert,勾選需要恢復的文件萎河,OK之后就恢復完成了荔泳,文件的修改就撤銷完畢。
8.刪除文件
有些代碼文件虐杯,我們可能需要把它刪除掉玛歌,其實刪除你可以直接刪除掉,或者是使用Git的delete操作都是可以的(執(zhí)行操作后擎椰,需要記得commit哦)支子,刪除文件也相當于一個更新操作。
選中文件單擊右鍵 > TortoiseGit > Delete或者Delete(keep local)达舒,區(qū)別是前者把文件從代碼庫刪除掉值朋,并把文件從該目錄刪除。執(zhí)行完成后巩搏,需要commit昨登,后面就不會再提交該文件的版本庫了。
需要注意的是:執(zhí)行Delete(keep local)后贯底,文件還存在本地丰辣,提交的時候會默認又把該文件勾選提交哦,這個時候可以不勾選提交,或者是參考下一步忽略文件的操作笙什。
9.忽略文件
有些文件我們可能只是臨時放在目錄中測試的飘哨,不想提交到版本庫里面去,那么我們可以在提交的時候不勾選提交即可琐凭,但是如果文件一多芽隆,那么這個看起來就很吃力,所以统屈,我們可以使用Git的忽略文件提交操作摆马。
如上一步,readme.md這個文件刪除后鸿吆,我不想提交到版本庫里面去了,那么我執(zhí)行如下操作:選中文件單擊右鍵 > TortoiseGit > Add to ignore list > readme.md述呐,點擊OK后惩淳,會在根目錄生成.gitignore文件,這個文件記錄了Git系統(tǒng)提交版本的時候需要忽略的文件規(guī)則乓搬,注意:下面一行的*.md
的意思思犁,忽略掉所有的.md結尾的文件的意思。
忽略文件后进肯,勾選.gitignore文件再次commit激蹲,文件忽略操作即完成:
10.文件版本歷史與文件比對
我們經常提交文件版本,形成了版本庫江掩,那么我們如何查看我們提交的版本歷史呢学辱?
需要查看哪個文件或者是目錄的版本歷史,在該目錄或者文件下右鍵环形,然后執(zhí)行Show log操作(需要目錄或者文件在版本庫中跟蹤管理策泣,沒有忽略提交的哦):
點擊每一個版本的記錄行,就可以看到下面的版本說明和對應操作的文件
有些時候抬吟,我們寫著寫著代碼的時候萨咕,發(fā)現(xiàn)我不小心把已經寫好的提交到版本庫的某一段代碼刪除掉了,這個時候我記得版本庫里面有火本,但是我現(xiàn)在寫的代碼還沒有寫好危队,不想撤銷該版本的修改,那么我們可以查看這個文件的版本歷史钙畔,在最后的歷史版本中找到該段代碼復制過來哦茫陆。
具體操作如下:
首先我建立了一個文件index.md
,并且提交了幾次修改版本刃鳄,最終版本歷史記錄和文件狀態(tài)如下:
接著我修改并保存了該index.md為如下圖盅弛,還沒有提交到版本庫,這個時候我發(fā)現(xiàn)第一行被我刪除了,我想找回來:
我們可以通過當前工作區(qū)文件和對應的版本庫的文件歷史進行對比找回來:
在該文件上單擊右鍵>TortoiseGit > Diff(差異)挪鹏,你就可以看到工作區(qū)和版本庫的文件對比差異见秽,差異的部分會用高亮顏色標識出來的哦。
11.版本回退
一般版本恢復
有些時候讨盒,我們發(fā)現(xiàn)代碼比較槽糕解取,想把某個文件或者是目錄的代碼回退到某一天的某個版本,那么我們應該怎么處理呢返顺?
在某個目錄或者文件下面右鍵禀苦,查看歷史記錄,也就是上一步的版本歷史查看遂鹊,如下圖振乏,我要恢復index.md的版本到修改index這個版本,然后找到想要恢復的版本上面進行如下操作:單擊右鍵>執(zhí)行Reset "master" to this...(也就是把版本庫master分支設定到該版本):
然后版本庫的默認master分支和工作區(qū)中的文件都會回退到這個版本秉扑,需要特別注意的是:這個版本之后的版本信息在Show log中看不到了哦慧邮。
如果這個時候你發(fā)現(xiàn),我回退錯了舟陆,你就慌了误澳,Show log里面沒有了,想恢復到原來的最新版本咋整秦躯?
幸好忆谓,Git還有一個reflog功能,也就是你所有執(zhí)行的Git操作踱承,這里面都會看到倡缠,具體操作:在根目錄空白處單擊右鍵 > TortoiseGit > Show Reflog :
選擇一個你想回退的版本,單擊右鍵 > Reset "master" to this...茎活,和上面的是類似的操作毡琉,確認后,代碼版本又會回到最新版本啦妙色。
強行回退遠程倉庫版本
現(xiàn)實總是不讓我們省心桅滋,有些時候,我們發(fā)現(xiàn)我們寫的代碼寫了一段時間沒有寫好身辨,我想回到前幾天的某個版本V1重新開始丐谋,然后,我就按照上面的版本回退把本地的版本庫恢復到前幾天的V1版本了煌珊。
接著我想把回退到前幾天的這個V1版本推送到遠程倉庫的時候發(fā)現(xiàn)号俐,推送不上去,提示遠程倉庫比本地倉庫新的意思定庵,也就是遠程代碼是今天推送的吏饿,但是本地倉庫的代碼我恢復到前幾天的V1版本了踪危,本地代碼落后了,Git就會讓你先pull下來猪落,同步遠程倉庫代碼贞远,但是這樣的話,你會發(fā)現(xiàn)本地倉庫又變成了今天的代碼了笨忌,而不是前幾天的V1代碼蓝仲,然后我們又把本地恢復為V1……如此重復……尷尬了!9倨!袱结!
解決這個問題贡茅,我們只有強行讓遠程倉庫版本回退了菜拓,如下操作:
首先,本地先按上面說的一般版本恢復辦法恢復到你想要的版本靶壮,因為是回退维费,這個時候有可能本地的文件會存在最新的文件代碼棚饵,那么請不要commit提交,因為你要恢復到老的版本掩完,那么新版本的代碼肯定不要了,拋棄本地的所有未提交的東西硼砰,根目錄右鍵執(zhí)行:TortoiseGit > Revert且蓬,然后勾選所有需要拋棄的文件,OK题翰;
然后恶阴,根目錄空白處執(zhí)行右鍵:Git Sync...,在彈出的對話框中勾選Force豹障,然后Push推送到遠程冯事,這個的意思就是強制同步本地版本庫到遠程倉庫,強行把遠程倉庫的版本庫回退
然后你到遠程倉庫查看版本信息血公,就會發(fā)現(xiàn)已經回退啦昵仅。。累魔。摔笤。
臨時存儲
某日,我正在開發(fā)一個功能垦写,代碼寫到一半了吕世,產品經理過來跟我說,哥梯投,線上有個bug需要緊急修復一下……我肯定不敢大意呀命辖,只能停下手中的工作况毅,先去“救火”不,但是當前開發(fā)的功能沒有開發(fā)完尔艇,提交推送的話也可能影響到其他同事更新代碼的時候把我未完成的代碼更新過去了尔许,到時候他們那里沒有辦法執(zhí)行代碼了,那就不得了啦……所以漓帚,這個時候母债,我想臨時先存儲一下目前工作區(qū)的各個文件的狀態(tài),等到我修復完bug之后再回來繼續(xù)做后續(xù)的開發(fā)尝抖。那么我們就使用到了Git的stash功能毡们,具體操作如下:
右鍵TortoiseGit > Stash Save,然后輸入說明文字昧辽,保存即可
恢復到之前的開發(fā)狀態(tài):右鍵TortoiseGit > Stash List衙熔,然后在彈出的對話框中選擇需要恢復的狀態(tài),右鍵搅荞,執(zhí)行Stash Apply即可红氯。
最后如果不需要這個臨時狀態(tài)了,那么就可以在狀態(tài)列表里面執(zhí)行右鍵咕痛,然后Delete Ref痢甘,確認即可
總結
最常用的操作就是在工作區(qū)目錄下面單擊右鍵,選擇TortoiseGit相關的操作和Commit操作:
從上面的操作茉贡,你可以體會到Git的功能非常強大塞栅,也對我們的開發(fā)有著非常好的幫助,以上都是我們在windows下面最常用的Git操作技能腔丧,更多技能大家可以再自己獨立研究研究放椰。