Git極簡學習筆記

cnnbull發表於2021-09-09

git的學習筆記

1. 安裝git

2. 簡單開始

建立版本庫,即在需要編寫的程式碼的工作區建立,可以在git bash或者cmd中鍵入

git init

就會生成一個 .git 資料夾

假設倉庫中有了一些程式碼檔案,文字等比如 readme.txt

那麼接下來僅需要兩步就可以將一個檔案提交到倉庫,為什麼需要兩步呢,而不是直接直接提交,且記住一個重要概念:暫存區

第一步: 將檔案新增到Git倉庫
git add readme.txt

第二步: 將檔案提交到倉庫,分號裡就是描述這次提交做了什麼事情
git commit -m "wrote a file about readme"

而為什麼Git提交檔案到倉庫需要add、commit兩步呢? 因為commit一次可以提交很多檔案,所以可以多次add不同的檔案

可以透過git status 檢視目前檔案提交的狀態,包括更改,是否提交等

那麼如果新增了修改,但是不記得那些具體內容了,可以透過git diff readme.text 檢視修改的詳細內容


那麼這裡就有一些應用了,比如我們已經編寫程式碼並不斷修改提交多次到倉庫中了,但是我們如果誤操作比如刪除、改錯了,想要回退呢?
比如回退到昨天修改的檔案內容,那麼可以透過git log 檢視我們的提交記錄

目前看來這個功能意義不大,似乎是回退的一次提交的所有內容,即一天的工作都會回退了,再說這種回退極少應用到,需要再說吧


接下里解釋 工作區 和 暫存區, 工作區即存檔程式碼的顯式區域,而暫存區是git的,凡人看不著的,是存放在.git中的,而第一步git add實際就是將檔案放入暫存區中,第二步git commmit -m "..."提交更改,即將暫存區的內容提交到當前分支中

當我們在建立git倉庫版本庫時,git自動為我們建立了一個唯一一個master分支

一句重要的話: Git 管理的是修改,即git始終提交的都是暫存區的內容,而暫存區的內容取決於新增到暫存區時刻的修改,git追蹤的是修改,而修改的狀態新增或提交都取決於使用者

上面提到回退確實挺麻煩的,但是撤銷修改確有一定的實用意義,是針對單個檔案的撤銷修改,其目的是

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

但是也就還存在一種情況將錯誤的檔案新增到了暫存區,當然是沒有提交的狀態,那麼可以透過git reset HEAD readme.txt把暫存區的修改撤銷掉,重新放回工作區 ,然後我們可以再git checkout -- readm.text丟棄在工作區修改的內容


刪除操作,比如我們想要刪除已經在版本庫中的某個檔案

git rm readme.txt

git commit -m "rm readme.txt"

即可完成真正真正刪除操作,那麼我刪錯了怎麼辦呢? 可以:git checkout -- test.txt

3. 遠端倉庫-github

接下來是比較有趣的內容,即遠端倉庫, 這也是Git的殺手級功能,利用github.com獲取免費強大的遠端倉庫再好不過了!
由於本地Git倉庫和GitHub倉庫之間的傳輸是透過SSH加密的,所以,需要一點設定:

$ ssh-keygen -t rsa -C "youremail@example.com"

然後一路回車即可
第2步:登陸GitHub,開啟“Account settings”,“SSH Keys”頁面
然後,點“Add SSH Key”,填上任意Title,在Key文字框裡貼上id_rsa.pub檔案的內容

為什麼GitHub需要SSH Key呢?因為GitHub需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支援SSH協議,所以,GitHub只要知道了你的公鑰,就可以確認只有你自己才能推送。

當然,GitHub允許你新增多個Key。假定你有若干電腦,你一會兒在公司提交,一會兒在家裡提交,只要把每臺電腦的Key都新增到GitHub,就可以在每臺電腦上往GitHub推送了。

最後友情提示,在GitHub上免費託管的Git倉庫,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感資訊放進去。

如果你不想讓別人看到Git庫,有兩個辦法,一個是現在Github也已經免費了私密倉庫!!! 另一個辦法是自己動手,搭一個Git伺服器,因為是你自己的Git伺服器,所以別人也是看不見的。這個方法我們後面會講到的,相當簡單,公司內部開發必備。

確保你擁有一個GitHub賬號後,我們就即將開始遠端倉庫的學習。

接下來在github上建立一個倉庫,然後按照github上的提示可以把一個已有的本地倉庫與之關聯,然後將本地倉庫的內容推送到Github倉庫中

git remote add origin git@github.com:example-github-id/example-git-name.git

新增後,遠端庫的名字就是origin,這是Git預設的叫法,也可以改成別的,但是origin這個名字一看就知道是遠端庫。

下一步,就可以把本地庫的所有內容推送到遠端庫上:

git push -u origin master

把本地庫的內容推送到遠端,用git push命令,實際上是把當前分支master推送到遠端。

由於遠端庫是空的,我們第一次推送master分支時,加上了-u引數,Git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令

從現在起,只要本地作了提交,就可以透過命令:

git push origin master

講了先有本地庫,後有遠端庫的時候,如何關聯遠端庫。

現在,假設我們從零開發,那麼最好的方式是先建立遠端庫,然後,從遠端庫克隆。那麼我們如何從遠端庫中克隆到本地呢? 很簡單:

git clone git@github.com:example-github-id/example-git-name.git

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2524/viewspace-2822496/,如需轉載,請註明出處,否則將追究法律責任。

相關文章