一、git簡介
git是目前世界上最先進的分布式版本控制系統。所謂的分布式版本控制系統,就是存在這麼乙個軟體,不但能自動幫我記錄每次檔案的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的檔案了,也不用把檔案傳來傳去。如果想檢視某次改動,只需要在軟體裡瞄一眼就可以了,這樣非常方便;
git安裝(mac下)
安裝homebrew,然後通過homebrew安裝git;
二、git本地命令管理
1、建立版本庫
版本庫又名倉庫,英文名repository,可以簡單理解成乙個目錄,這個目錄裡面的所有檔案都可以被git管理起來,每個檔案的修改、刪除,git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以「還原」;
$mkdir learngit ---建立名字為"learngit"的檔案
$cd learngit ---進入該檔案
$pwd ---檢視該檔案所在目錄
$gid init ---初始化這個git倉庫
然後將檔案新增到版本庫。需要注意的是,所有的版本控制系統,其實只能跟蹤文字檔案的改動,版本控制系統可以告訴你每次的改動;
2、更新git倉庫檔案
如果此時我想新增乙個readme.tet檔案,更新到git倉庫去管理,在mac下操作如下:
$vim readme.txt
---編輯新增如下內容
this is the first line in readme.txt
---然後更新
$git add readme.txt
---然後告訴git,把檔案提交到倉庫
$git commit -m "v1.0"
git commit 命令中 -m後面輸入的是本次提交的說明,可以輸入任意內容,當然為了方便以後從歷史記錄裡找到改動記錄,輸入一些有意義的內容,比如"v1.0"代表版本1;
需要注意的是,git新增檔案需要add,commit兩步;commit可以一次提交很多檔案,所以可以多次add不同的檔案;
提交之後,如果需要檢視具體修改的內容,可以輸入
$git status ---檢視git倉庫下修改記錄
注意,這個修改記錄會顯示你的提交說明,也就是前面所說的"v1.0",方便檢視;
另外,如果下次你再次開啟命令列,不知道上次怎麼修改的readme.txt,這個時候需要用
$git diff ---對比檢視當前內容與上次內容不同之處
3、版本回退
如果我現在不想要當前的版本內容,因為覺得修改不恰當,我需要要前乙個或者前幾個的版本內容,那麼就可以做如下操作:
$git log --pretty=online ---檢視命令的歷史記錄
$git reset --hard head^ ---回到前乙個版本
這裡需要說明的是,在git log後面加上的–pretty=oneline是為可以把所有命令的歷史記錄資訊簡略表示,每條記錄顯示一行,如下圖:
而第二行git reset -hard head^ 中的head^表示的是當前指標head回退一步,也可以用head~1來替代(這樣可以方便處理當需要回退很靠前的版本的情況);
事實上git管理是這樣的,每提交乙個新版本,git就會把它們自動串成一條時間線;然後會有乙個叫做head的指標,指向你當前所在的版本;因此,可以這麼說,git的版本回退速度非常快,當你回退版本的時候,git僅僅是把head的指向更改而已;
那麼如果我現在已經跳到前乙個版本了,我覺得還是不行,想要跳回去,怎麼辦呢?
$git reset --hard 1094a
這個1094a是後乙個版本的乙個id號(暫時這樣稱呼吧),那麼這個版本號其實是可以通過git reflor檢視的,這個命令是用來記錄你的每一次你命令;
4、暫存區和工作區
工作區:在你的電腦裡能夠看到的目錄,比如說learngit資料夾就是乙個工作區;
版本庫:工作區里有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫;git版本庫里存了很多東西,其中最重要的就是稱為stage的暫存區,還有git為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head;
如下圖所示:
前面我們提到的把檔案往git版本庫里新增的時候,是分兩步執行的:
第一步是用git add把檔案新增進去,實際上就是把檔案修改新增到暫存區;
第二部是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支;
因為我們建立git版本庫時,git自動為我們建立了唯一乙個master分支,所以,現在git commit就是往master分支上提交更改;
我們可以簡單理解為,需要提交的檔案修改統統放到暫存區,然後,一次性提交暫存區的所有修改;
5、管理修改
為什麼git比其他版本控制系統設計得優秀,因為git跟蹤並管理的是修改,而非檔案;比如你新增了一行,這就是乙個修改,刪除了一行,這也是乙個修改;
你可以通過 git diff來檢視修改;如果我們需要撤銷修改,可以使用如下命令列:
$git checkout -- readme.txt ---把readme.txt檔案在工作區的修改全部撤銷
這裡有兩種情況:
一種是readme.txt自修改後還沒有被放到暫存區,現在撤銷修改就回到和版本庫一模一樣的狀態;
一種是readme.txt已經新增到暫存區後,又作了修改,現在撤銷修改就回到新增到暫存區後的狀態;
總之,就是讓這個檔案回到最近一次git commit或git add時的狀態;
這個時候,相對應的就會有如下幾個處理方法;
① 當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file;
② 當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head ,就回到了①,第二步按照①操作;
③ 已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考如上的"版本回退",但是前提是沒有推送到遠端庫;
6、刪除檔案
操作如下:
$rm readme.txt
這個時候,git知道你刪除了檔案,因此,工作區和版本庫就不一致了,git status命令會立刻告訴你哪些檔案被刪除了;
當下,你就會有兩個選擇:
1)乙個是確實要從版本庫中刪除該檔案,那麼就用git rm刪掉,並且git commit;
2)乙個是刪錯了,此時可以用git checkout「一鍵還原」;其實是因為此時版本庫里還有,這個命令是用版本庫里的版本替換工作區的版本,因此無論工作區是修改還是刪除,都可以還原;
Git入門簡介
github github就是乙個基於git的 託管 在上面,你可以免費託管你的 進行版本控制,同別人協同開發,眾多優秀開發者的 託管地。gitlab 使用git作為 管理工具,並在此基礎上搭建起來的web服務。以github為例,2.本地建立空資料夾,在檔案下執行以下demo git init 初...
git小白入門(本地git倉庫)
git是類似於svn一樣的版本控制工具。github 乙個分布式倉庫,面向開源及私有軟體專案的託管平台。倉庫會詳細介紹你寫了幾行 進行版本控制。github 使用了git,但是這兩個沒有直接關係。github被微軟收購。初期準備 你的github賬戶,使用者名稱及郵箱。1.開啟cmd視窗,建立乙個名...
git入門 尚矽谷 git簡介
關鍵字 什麼是git git是一種分布式版本控制工具 git功能 協同修改 資料備份 不僅能備份當前檔案狀態,還能儲存檔案的每乙個提交過的狀態 版本管理 在儲存檔案的時候,能夠做到不重複的儲存檔案資訊 許可權控制 對團隊內的成員進行許可權控制 對團隊外的成員驚醒 的審核 git獨有 歷史紀錄 檢視修...