Git入門必讀(上) Git簡介 本地命令管理

2021-08-30 06:34:37 字數 3695 閱讀 3963

一、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獨有 歷史紀錄 檢視修...