git 0基礎入門—git入門與實踐(1)—詳細圖解git安裝詳情及超詳細的入門介紹!(2020.06.30更新)

git入門與實踐(1)

1. 什麼是git?

  Git is a free and open source distributed version control system

  Git是一個免費的開源分佈式版本控制系統

  官網:https://git-scm.com/

  Git是一個版本管理控制系統(縮寫VCS),它可以在任何時間點,將文檔的狀態作爲更新記錄保存起來,也可以在任何時間點,將更新記錄恢復回來。在編輯新文檔覆蓋舊文檔,會發出警告,這就避免了自己不小心覆蓋掉別人寫的文檔。使用工具維護文檔,會比人爲方便得多。使用git的核心目的就是管理項目的更新迭代,管理項目的版本,在實際的開發過程中,已經對多個文件進行了更改,突然發現功能的實現思路是有問題的,需要對功能進行重寫,但是由於修改的文件過多,已經不能通過編輯器的撤銷操作,退回到修改之前的狀態,使用git就能很好解決這些問題了。在開發新功能之前,可以將項目的狀態保存起來,如果在開發的過程中發現有問題,就可以輕鬆的將代碼恢復到之前的狀態。git其實就是將項目開發不同階段的狀態保存起來,以後可以回退到任何階段。
19

2. 版本控制


2. 1 版本管理

版本管理是一種記錄文件變化的方式,以便將來查閱特定版本的文件內容。

01

保留文件所有的修改歷史記錄,可以方便地撤銷之前對文件的修改操作。

2. 1. 1 人爲維護文檔版本的問題

  1. 文檔數量多且命名不清晰導致文檔版本混亂

  2. 每次編輯文檔需要複製,不方便

  3. 多人同時編輯同一個文檔,容易產生覆蓋

04

  保留文件所有的修改歷史記錄,可以方便地撤銷之前對文件的修改操作。

2. 2 版本控制系統

  它可以帶來哪些好處呢?如:小迪最近在開發一個項目,完成了之後,產品經理就來找小迪,做一些修改,第一天可能我還很有耐心。結果第二天他又來了,改完…第三天又來了…改了n多天,他告訴小迪,拿出第5天修改的就可以了,剩下的都不要了。心中一定飄過了100只cnm,發現之前修改的過程文件都沒有留!

  那如果開發過程中遇到此類問題怎麼解決呢?每次修改都保存一個文件,標註日期和版本號。如果開發週期長,也非常考驗我們本機的內存了。但如果產品經理要的是某一天哪個步驟的的工作呢?就不好解決了,這時候就需要版本控制系統來解決了。

  git的歷史記錄就相當於我們平時使用的編輯器,我們頻繁的刪除、修改、更新都會有記錄,一般情況下時間週期較長的項目,但是我們也不需要每次修改都保存記錄,就像小迪之前使用autim designer(畫單片機用的軟件),這樣對內存是個考驗,到時候去尋找也是問題。所以git採用主動提交的方式。

3. 安裝

官網:https://git-scm.com/

image-20200629121801724

3. 1 windows

  下載安裝有一堆選項,默認安裝即可

使用許可聲明

image-20200629123101676

選擇安裝路徑

  在輸入框內輸入想要安裝到的本機路徑,也就是實際文件夾位置,或點擊“Browse…”選擇已經存在的文件夾,

image-20200629123135463

  然後點擊“Next”按鈕繼續,進入下圖界面:

選擇安裝組件

  上圖紅框內的選項是默認勾選的,建議不要動。綠色框1是決定是否在桌面創建快捷方式的。綠色框2是決定在所有控制檯窗口中使用TrueType字體和是否每天檢查Git是否有Windows更新的。這些根據自己需要選擇。

image-20200629123441231

  點擊“Next”按鈕進入下圖界面:

選擇開始菜單頁

  這個界面是創建開始菜單中的名稱,不需要修改,

image-20200629123512518

  直接點“Next”按鈕繼續到下圖的界面:

選擇Git文件默認的編輯器

  選擇默認編輯器,我日常使用Notepad++作爲編輯器,勾選使用Notepad++(還可選擇Nano、Vim、Vs code、Vs code內側版本編輯器)作爲 Git 的默認編輯器

image-20200629123859291

  點擊“Next”按鈕進入下圖界面:

調整您的PATH環境

  這個界面是調整您的PATH環境。

  第一種配置是“僅從Git Bash使用Git”。這是最安全的選擇,因爲您的PATH根本不會被修改。您只能使用 Git Bash 的 Git 命令行工具。但是這將不能通過第三方軟件使用。

  第二種配置是“從命令行以及第三方軟件進行Git”。該選項被認爲是安全的,因爲它僅向PATH添加了一些最小的Git包裝器,以避免使用可選的Unix工具造成環境混亂。
您將能夠從Git Bash,命令提示符和Windows PowerShell以及在PATH中尋找Git的任何第三方軟件中使用Git。這也是推薦的選項。

  第三種配置是“從命令提示符使用Git和可選的Unix工具”。警告:這將覆蓋Windows工具,如 “ find 和 sort ”。只有在瞭解其含義後才使用此選項。

  我選擇推薦的選項第二種配置

image-20200629124151160

  點擊“Next”按鈕繼續到下圖的界面:

選擇HTTPS後端傳輸

  這個界面是選擇HTTPS後端傳輸。

  第一個選項是“使用 OpenSSL 庫”。服務器證書將使用ca-bundle.crt文件進行驗證。這也是我們常用的選項。

  第二個選項是“使用本地 Windows 安全通道庫”。服務器證書將使用Windows證書存儲驗證。此選項還允許您使用公司的內部根CA證書,例如通過Active Directory Domain Services 。

  我使用默認選項第一項

image-20200629124356056

  點擊“Next”按鈕繼續到下圖的界面:

配置行尾符號轉換

  這個界面是配置行尾符號轉換。

  第一個選項是“簽出Windows風格,提交Unix風格的行尾”。簽出文本文件時,Git會將LF轉換爲CRLF。提交文本文件時,CRLF將轉換爲LF。對於跨平臺項目,這是Windows上的推薦設置(“ core.autocrlf”設置爲“ true”)

  第二個選項是“按原樣簽出,提交Unix樣式的行尾”。簽出文本文件時,Git不會執行任何轉換。 提交文本文件時,CRLF將轉換爲LF。對於跨平臺項目,這是Unix上的建議設置(“ core.autocrlf”設置爲“ input”)

  第三種選項是“按原樣簽出,按原樣提交”。當簽出或提交文本文件時,Git不會執行任何轉換。不建議跨平臺項目選擇此選項(“ core.autocrlf”設置爲“ false”)

  我選擇第一種選項

image-20200629124504765

  點擊“Next”按鈕繼續到下圖的界面:

配置終端模擬器以與Git Bash一起使用

  這個界面是配置終端模擬器以與Git Bash一起使用。

  第一個選項是“使用MinTTY(MSYS2的默認終端)”。Git Bash將使用MinTTY作爲終端模擬器,該模擬器具有可調整大小的窗口,非矩形選擇和Unicode字體。Windows控制檯程序(例如交互式Python)必須通過“ winpty”啓動才能在MinTTY中運行。

  第二個選項是“使用Windows的默認控制檯窗口”。Git將使用Windows的默認控制檯窗口(“cmd.exe”),該窗口可以與Win32控制檯程序(如交互式Python或node.js)一起使用,但默認的回滾非常有限,需要配置爲使用unicode 字體以正確顯示非ASCII字符,並且在Windows 10之前,其窗口不能自由調整大小,並且只允許矩形文本選擇。

  我選擇默認的第一種選項

image-20200629124609215

  點擊“Next”按鈕繼續到下圖的界面:

配置配置額外的選項

  這個界面是配置配置額外的選項。

  第一個選項是“啓用文件系統緩存”。文件系統數據將被批量讀取並緩存在內存中用於某些操作(“core.fscache”設置爲“true”)。 這提供了顯著的性能提升。

  第二個選項是“啓用Git憑證管理器”。Windows的Git憑證管理器爲Windows提供安全的Git憑證存儲,最顯着的是對Visual Studio Team Services和GitHub的多因素身份驗證支持。 (需要.NET Framework v4.5.1或更高版本)。

  第三個選項是“啓用符號鏈接”。啓用符號鏈接(需要SeCreateSymbolicLink權限)。請注意,現有存儲庫不受此設置的影響。

  我勾選默認的第一、第二選項,

image-20200629124736212

  點擊“Next”按鈕繼續到下圖的界面:

配置實驗選項

  這個界面是配置實驗選項。

  啓用實驗性的內置添加 -i / -p。(新!)使用實驗性的內置交互式add(“ git add -i”或“ git add -p”)。這使其速度更快(尤其是啓動!),但尚未被認爲是可靠的。

  默認不勾選

image-20200629124901468

  直接點擊“Next”按鈕繼續到下圖的安裝進度界面:

安裝進度指示

image-20200629124957435

  安裝進度結束之後,會出現下圖的完成Git安裝嚮導界面:

安裝完成

  在這個界面,可以勾選是否啓動啓動Git Bash和是否查看發行說明,然後點“Finish”按鈕退出安裝界面。

image-20200629125022726

啓動測試

  到此,Git的安裝完成,可以在開始菜單中看到Git的三個啓動圖標(Git Bash、Git CMD(Deprecated)、Git GUI)。

  Git Bash,是Git配套的一個控制檯,點擊打開如下圖:

image-20200629125134387

  Git CMD(Deprecated),是通過CMD使用Git(不推薦使用),點擊打開如下圖:

image-20200629125202742

  Git GUI,是Git的可視化操作工具,點擊打開如下圖:

image-20200629125223272

3. 2 mac

  下載無選項,直接安裝即可,也可通過命令行進行安裝


4. 簡單的命令-入門運用

4. 1 git init

git init 初始化創建倉庫

  會常見出一個隱藏的.git文件夾,所有的操作歷史將存入這裏

image-20200629125909443

  在windows下查看隱藏文件

image-20200629130001685

  在mac下 需要shift+command+.顯示隱藏文件夾

  注意:git不光可以管理項目的文件,所有類型的文件都可以被管理。

4. 2 git status

git status 查看當前倉庫所在目錄的文件狀態

  Untracked 未追蹤的

  當前的文件沒有被git追蹤,即當前文件沒有被git記錄。

  注意:如果編輯命令的時候忘了單詞,可以用tab鍵,系統自動提示。

image-20200629130459653

4. 3 git add filename

git add filename 使文件加入追蹤

Changes to be committed 改變成可被提交的狀態了

image-20200629130808470

4. 4 git commit

git commit 提交(並且附帶:對此次操作的描述信息)

(由於小迪的電腦已經配置過了,就懶得再重弄了,但顯示如下)

  每次提交必須要記錄,姓名和郵箱,通過這種方式,能快速找到是由誰來提交的。

image-20200629131633365

git config --globe user.email “[email protected]

--globe 代表全局設置,即設置一次就夠了。

git config --globe user.name “張三”

git config --global -l

image-20200629132621138

image-20200629132730229

  這時候就打開了,小迪配置好的默認編輯器vs code,默認是vim(對中文支持不太友好,容易亂碼)

  修改默認編輯器:

git config core.editor notepad
git config --global core.editor "code -w" # 設置vscode

image-20200629132810085

  可以在編輯器裏添加描述:

  注意:#代表註釋,我們千萬別把記錄寫在這裏面,該文件下面的註釋,只是提示給用戶看的!

新建了11.txt文件
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
#	new file:   1.txt
#

image-20200629133043257

  再去查看狀態,沒有任何可提交了。

image-20200629133109190

4. 5 git log

git log 查看提交記錄

image-20200629133151868

  我們可以修改1.txt內容:

image-20200629134341455

  注意:養成好習慣,不管做什麼操作,都git status一下,看下狀態

  我們發現文件狀態又變化了:

modified:已修改的狀態。

  對於當前的文件,git進行了追蹤,追蹤後對比記錄發現文件與之前不一樣了,git就認爲文件被修改了。

image-20200629134535226

  我們輸入git commit,發現並沒有運行成功。

  Changes not staged for commit 未準備提交的更改

  此時需要先git add filename ,使文件加入追蹤

image-20200629135151179

image-20200629140142409

image-20200629140150360

image-20200629140214708

git log

image-20200629140255158

  爲什麼明明已經追蹤過的文件,修改完後還需要git add filename ,使文件加入追蹤?



4. 6 補充:默認編輯器vim基本使用


4. 6. 1 輸入

  我們剛打開文件進入的界面是不能直接編輯文件的,因爲我們處於normal模式下,而要輸入的話,需要進入insert模式,才能進行編輯了。摁下 i 鍵,進入insert模式而當我們編輯完之後,摁下esc鍵,就可以回到normal模式了。

在這我們介紹一下vim的模式,主要有3種,normal mode/insert mode/visual mode。normal模式是我們默認處在的模式,主要是我們輸入命令,對文本進行操作的。而insert模式,這是像我們一般的編輯器一樣,輸入。

而且當我們進入insert模式後,做完一些操作,最好鍵入esc命令,回到normal模式,至於原因,我們後面會看到的

  還有其他的命令,這裏不多言了。

命令 作用
在下方新開一行,並進入insert模式
O 在下方新開一行,並進入insert模式
在光標後一個字符開始編輯
A 在光標所在行行尾開始編輯
I 在光標所在行開頭開始編輯

4. 6. 2 移動

  vim是不能用鼠標操作的(此處說的是原生版本),我們要移動光標的話,似乎只能用方向鍵了。但是方向鍵經常比較難摸到,就比較麻煩了。
所以,我們下面介紹一些更好的vim移動方式。

注意:移動部分的命令都是在normal模式輸入。

  • j、k、h、l
命令 作用
j 光標向下移動一行
k 光標向上移動一行
h 光標向左移動一行
l 光標向右移動一行

  而且這幾個鍵在我們右手的鍵位上,很方便就可以摁到。但是,hl不建議常用,因爲移動效率太低了,每摁一下就移動一格。我們下面介紹更便捷的移動操作。

  • w、e、b
命令 作用
w 向後移動一個單詞,從詞頭到詞頭
e 向後移動一個單詞,從詞尾到詞尾
b 向前移動一個單詞,從詞頭到詞頭

  這種以單詞爲單位的移動,要比h\l那種以一格爲單位的移動快很多,而且有效率。而且h/l是無法跨行的,也就是當我們用摁h鍵,移動光標到行首時,光標是無法移動到上一行尾的,而b鍵可以。

  • Ctrl+d、Ctrl+u

  上面講的是單詞的移動,但是如果在我們看文章或代碼時,用的更多的是翻頁,jk鍵每次只能移動一行,是無法滿足我們的需求的。下面就講到翻頁了。

命令 作用
Ctrl+d 向下翻半頁
Ctrl+u 向上翻半頁

  而且是每次翻半頁,不用擔心一翻頁,就不用擔心找不到之前看到哪了。

  • gg 、G

  上下翻頁固然很方便,但是我們經常看文檔或寫文檔時,會想要跳回文章的開始部分。這個時候,如果文章很長,那麼用翻頁回去就太累了。vim這麼可以這麼不方便呢,hhhh。所以,我們是有一個回到頂部按鈕的,那就是gg。而跳到文章尾部,則是G

4. 6. 3 退出

  摁下esc鍵,就可以回到normal模式了,輸入:wq即可退出。如果提示沒有文件名,則輸入:wq filenamew代表保存文件,q代表退出。所以,當你如果進入vim時,沒有指定文件名時,vim會在你退出保存時提示你加上一個文件名(上面那個filename只是代表文件名)。或者可以不保存,輸入:q!強制退出。

更多參考


5. git add到底做了啥?

  git add在剛剛我們提過,它是添加一個文件,讓git對它進行追蹤,那爲什麼追蹤之後,我們再次提交的時候,還需要git add呢?add操作到底做了什麼?

5. 1 文件的三種狀態

已修改、已暫存、已提交

它們分別對應的用途如圖所示:

已修改:被修改的文件

已暫存:等待被提交的文件

已提交:提交到本地倉庫的文件

image-20200629150620748

注意:未被git追蹤的文件不參與以下三種狀態,稱之爲未追蹤狀態:Untracked

5. 1. 1 已暫存(stage)

  之前我們輸入git commit,發現並沒有運行成功。

  Changes not staged for commit 未準備提交的更改,到底是什麼意思呢?

image-20200629151731990

5. 2 工作區域

工作目錄、暫存區域、Git倉庫

image-20200629152550893

5. 3 git工作流

  工作目錄中修改或創建文件都在工作目錄中,如果想把修改記錄到git倉庫中,必須首先經過的就是暫存區域,之後進入了暫存區域,才能提交到git倉庫裏。

  1. 在工作目錄中修改文件
  2. 暫存文件
  3. 提交更新、找到暫存文件

image-20200629153417938

5. 3. 1 基本工作流程小結

git倉庫 暫存區 工作目錄
用於存放提交記錄 臨時存放被修改文件 被Git管理的項目目錄

05

6. git 使用小結

6. 1 Git 使用前配置

  在使用 git 前,需要告訴 git 你是誰,在向 git 倉庫中提交時需要用到。

  1. 配置提交人姓名:git config --global user.name 提交人姓名
  2. 配置提交人姓名:git config --global user.email 提交人郵箱
  3. 查看git配置信息:git config --list

  也可直接在計算機的中配置文檔中手動修改:

  C:\Users\Administrator

image-20200630135100412

image-20200630135141448

注意

  1. 如果要對配置信息進行修改,重複上述命令即可。
  2. 配置只需要執行一次。

6. 2 提交步驟

  1. git init 初始化git倉庫
  2. git status 查看文件狀態
  3. git add 文件列表 追蹤文件
  4. git commit -m 提交信息 向倉庫中提交代碼
  5. git log 查看提交記錄

6. 3 撤銷(恢復記錄)

  • 用暫存區中的文件覆蓋工作目錄中的文件: git checkout 文件

    • 比如在開發項目中的某個功能,功能開發一半的時候,將工作區的文件添加到了暫存區中。然後回到工作目錄中繼續開發,過了一會發現,後來開發的代碼存在問題。需要將代碼恢復到功能開發一半時的狀態,這個時候如何恢復呢?就可以利用暫存區中的文件覆蓋工作目錄中的文件的方式了。

      image-20200630141149856

      image-20200630141216472

      image-20200630141247924

      我們再修改其內容,但是此時假如發現有問題,需要回退之前暫存區的代碼。

      image-20200630141328271

      image-20200630141345609

      git checkout 1.txt

      image-20200630141430985

      再打開文件夾,就恢復到之前的狀態了。

      image-20200630141216472

  • 將文件從暫存區中刪除: git rm --cached 文件

  • 將 git 倉庫中指定的更新記錄恢復出來,並且覆蓋暫存區和工作目錄:git rest --hard commitID

    image-20200630142534139

    image-20200630142605214

07

7. 擴展


7. 1 cmd 命令

# 打開某一個盤面,如C盤
C:
# 打開文件夾
cd 文件夾路徑
# 清空操作界面
cls
# 新建一個文件
 New-Item  a.txt
 New-Item  mytest.txt  -Type  file

# 新建一個文件夾
 mkdir 新建文件夾

7. 2 git命令


7. 2 .1 當需要添加暫存區的文件過多的時候

gir add . 添加所有改動文件及未追蹤的文件

image-20200629161347167

7. 2 .2 每次進入vim模式輸入描述很費勁

git commit -m ‘描述’ 合併提交和描述,一步完成操作

image-20200629161507931

7. 2 .3 每次提交都要輸入add命令很麻煩

git commit -a -m ‘描述’ 從工作目錄提交到暫存區後,直接提交

假如修改一下文件內容:

image-20200629162140486

但是假如我們添加一個文件,再用此種方式提交發現出問題了!

image-20200629162548587

  注意:只要該文件是未被追蹤的,就說明一件事情,git根本不會對它進行管理。從而就沒有提交這種說法了。即git會完全無視它,提交命令也沒有用。因此如果是未追蹤的文件是不能省略步驟的,還是得一步步來。

image-20200629163036520

7. 3 中文亂碼

  1. 文件名亂碼

    git config --global core.quotepath false

  2. 編輯描述亂碼

    • 進入setting
    • 找到environment
    • 添加:set LANG=zh_CN.UTF-8

  win10操作系統,還是推薦大家使用terminal吧!cmder我用了很多辦法,也沒解決中文亂碼的問題。



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