Git學習手冊2 (附GitHub註冊指南)

本文是繼續我的上一篇:Git學習手冊1,鏈接如下:
Git學習手冊1

7.版本回退

我們已經學會了修改文件,現在如果繼續修改,修改完畢之後想要查看歷史記錄,可以使用git log命令
git log
git log命令顯示從最近到最遠的顯示日誌,我們可以看到最近三次提交
最近的一次是,增加內容爲333333.
上一次是添加內容222222
第一次默認是 111111.
如果嫌上面顯示的信息太多的話,我們可以使用命令 git log –pretty=oneline 演示如下:
git log –pretty=oneline
現在我想使用版本回退操作,我想把當前的版本回退到上一個版本,要使用什麼命令呢?可以使用如下2種命令,

  • 第一種是:git reset --hard HEAD^
    回退到上一個版本

那麼如果要回退到上上個版本只需把HEAD^ 改成 HEAD^^ 以此類推。那如果要回退到前100個版本的話,使用上面的方法肯定不方便,我們可以使用下面的簡便命令操作:git reset --hard HEAD~100 即可。

現在,我想回退到最新的版本,該怎麼做呢?
 我們可以通過版本號回退,使用命令方法如下:

git reset --hard 版本號 

問題又來了,不知道版本號,該怎麼辦呢?
彆着急,可以通過如下命令即可獲取到版本號:

git reflog 

同時,這裏需要提到一個概念:
(劃重點了)
什麼是工作區?與暫存區有什麼區別?

工作區:就是你在電腦上看到的目錄,比如目錄下testgit裏的文件(.git隱藏目錄版本庫除外)。或者以後需要再新建的目錄文件等等都屬於工作區範疇。

版本庫(Repository):工作區有一個隱藏目錄.git,這個不屬於工作區,這是版本庫。其中版本庫裏面存了很多東西,其中最重要的就是stage(暫存區),還有Git爲我們自動創建了第一個分支master,以及指向master的一個指針HEAD。

我們前面說過使用Git提交文件到版本庫有兩步:

第一步:是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區。

第二步:使用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支上。

8.Git撤銷修改、刪除文件

Ⅰ 撤銷修改

現在,如果我發現最後修改的文件有錯誤,所以,必須要恢復到以前的版本,我們可以有以下幾種方式:

  • 第一:如果我知道要刪掉那些內容的話,直接手動更改去掉那些需要的文件,然後add添加到暫存區,最後commit掉。

  • 第二:我可以按以前的方法直接恢復到上一個版本。使用 git reset --hard HEAD^

除此之外,還能怎麼辦?
可以直接使用撤銷命令!
先使用git status查看當前狀態
git status
可以發現,Git會告訴你,git checkout -- file 可以丟棄工作區的修改
注意:git checkout – readme.txt 中的 – 很重要,如果沒有 – 的話,那麼命令變成創建分支了。

例如:git checkout --readme.txt 意思就是,把readme.txt文件在工作區做的修改全部撤銷
在這裏有兩種情況:

  1. readme.txt 自動修改後,還沒有放到暫存區,使用撤銷修改就回到和版本庫一模一樣的狀態。
  2. 另外一種是readme.txt已經放入暫存區了,接着又作了修改,撤銷修改就回到添加暫存區後的狀態。

Ⅱ 刪除文件

一般情況下,可以直接在文件目錄中把文件刪了,或者使用如上rm命令:

rm 文件名

例如:
rm readme.txt
如果我想徹底從版本庫中刪掉了此文件的話,可以再執行commit命令,提交掉,就徹底刪除了,這時候,再想要在版本庫中恢復文件,是不可能的了。
謹記:一旦commit,有些操作不可逆。

那麼沒有commit之前,如果我想在版本庫中恢復此文件如何操作呢?
可以使用如下命令

git checkout -- 文件名

千萬不要把 -- 寫成了-,兩個槓之間沒有空格。

例如:git checkout -- readme.txt,就可以恢復回來了。

9.遠程倉庫

在瞭解這些之前,你得先有一個GitHub的賬號纔行,如果沒有的話,先註冊GitHub賬號
GitHub官方網站
打開之後是這樣的
GitHub註冊
如果有的話,直接點擊Sign in
沒有的話,穩住別慌,接着看下面

註冊GitHub

點擊Sign up
sign up
輸入完成之後點擊Select a plan,選擇免費版本,然後發送郵箱驗證信息
登錄你剛纔使用的郵箱賬號,會有一封來自於GitHub的驗證郵件,如果沒有的話,稍微等待一會,或者可以去郵箱的垃圾箱看看是不是被誤刪了。
email
點擊驗證之後,,就可以使用了。

下面我們繼續我們的Git。

Git push到GitHub

由於你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以需要一點設置:

第一步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果有的話,直接跳過此如下命令,如果沒有的話,打開命令行,輸入如下命令:

ssh-keygen -t rsa –C “[email protected]”, 由於我本地此前運行過一次,所以本地有,如下所示:
在這裏插入圖片描述
id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

第二步:登錄GitHub,打開” settings”中的SSH Keys頁面,然後點擊“Add SSH Key”,填上任意title,在Key文本框裏黏貼id_rsa.pub文件的內容。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
之後,你就能看到已經添加的key了
在這裏插入圖片描述

如何添加遠程庫?
我們已經在本地創建了一個Git倉庫後,又想在GitHub創建一個Git倉庫,並且希望這兩個倉庫進行遠程同步,這樣GitHub的倉庫可以作爲備份,又可以其他人通過該倉庫來協作。

首先,登錄GitHub上,然後在右上角找到“new repository”創建一個新的倉庫。如下:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在GitHub上,這個是空的。

GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到GitHub倉庫。

現在,我們根據GitHub的提示,在本地的testgit倉庫下運行命令:

git remote add origin 自己的網址
在這裏查看
在這裏插入圖片描述
例如我的是:https://github.com/cjw7177/testgit.git

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

git push -u origin master

由於遠程庫是空的,我們第一次推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。推送成功後,可以立刻在GitHub頁面中看到遠程庫的內容已經和本地一模一樣了
後面第二次,第三次等等,提交都可以直接使用命令

git push origin master

把本地master分支的最新修改推送到GitHub上了,現在你就擁有了真正的分佈式版本庫了。

如何從遠程庫克隆?

爲什麼要從遠程克隆?
 假如遠程庫有新的內容了,我們就可以從遠程克隆到本地來
首先,找到你需要clone的庫,例如,我自己的
https://github.com/cjw7177/Banker-s_Algorithm

使用命令git clone克隆一個本地庫。

git clone https://github.com/cjw7177/Banker-s_Algorithm

克隆之後,本地就有了Banker-s_Algorithm這個項目

10.創建與合併分支

在版本回退裏,你已經知道,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裏,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master纔是指向提交的,所以,HEAD指向的就是當前分支。

首先,我們來創建dev分支,然後切換到dev分支上。如下操作:

git checkout 命令加上 –b參數表示創建並切換,相當於如下2條命令

git branch dev

git checkout dev

git branch查看分支,會列出所有的分支,當前分支前面會添加一個星號。然後我們在dev分支上繼續做demo。
在這裏插入圖片描述
我們可以把dev分支上的內容合併到分支master上了,可以在master分支上,使用如下命令 git merge dev

git merge命令用於合併指定分支到當前分支上,合併後,再查看文件的內容,其實和dev分支最新提交的是完全一樣的。
在這裏插入圖片描述
注意到上面的Fast-forward信息,Git告訴我們,這次合併是“快進模式”,也就是直接把master指向dev的當前提交,所以合併速度非常快。

合併完成後,我們可以接着刪除dev分支了
在這裏插入圖片描述
總結創建與合併分支命令如下

查看分支:git branch

創建分支:git branch name

切換分支:git checkout name

創建+切換分支:git checkout –b name

合併某分支到當前分支:git merge name

刪除分支:git branch –d name

前面說到,Git一般使用“Fast forward”合併分支。在這種模式下,刪除分支後,會丟掉分支信息,我們可以使用帶參數 –no-ff來禁用”Fast forward”模式。

git merge –no-ff -m "······註釋~·····" dev

分支策略:首先master主分支應該是非常穩定的,也就是用來發布新版本,一般情況下不允許在上面幹活,幹活一般情況下在新建的dev分支上幹活,幹完後,比如上要發佈,或者說dev分支代碼穩定後可以合併到主分支master上來。

Git入門的知識差不多就這些,當然,還有其它比如各種分支:bug分支,以及多人協作的推送分支、抓取分支等,以後有機會再給大家寫。

到這裏,就結束了,碼字不易,還望各位路過的大佬們能點點關注、點點贊,謝謝各位老鐵。
表情包-笑臉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章