Git操作及使用

qq_44719052發表於2020-12-31

Git操作及使用

本筆記轉載於b站up主遇見狂神說的《Git最新教程通俗易懂》視訊 https://b23.tv/31Ug7R

1.安裝Git及環境配置

可以開啟git官網下載,但是官網下載太慢,可以去淘寶映象下載:http://npm.taobao.org/mirrors/git-for-windows/

1.1 啟動Git

安裝成功後在開始選單中會有Git項,選單下有3個程式:任意資料夾下右鍵也可以看到對應程式。

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/RnV^wO@izKeE.png

**Git Bash:**Unix與Linux風格的命令列,使用最多,推薦最多

Git CMD:Windows風格的命令列

Git GUI:圖形介面的Git,不建議初學者使用,儘量先熟悉常用命令

1.2基本的Linux命令

  1. cd 改變目錄

  2. cd .. 退回到

  3. pwd 顯示當前所在的目錄路徑

  4. clear 清屏

  5. ls 都是列出當前目錄中所有檔案

  6. toucd新建一個檔案,如touch index.js就會在當前目錄下新建一個index.js檔案。

  7. rm刪除一個檔案,rm index.js就會把index.js檔案刪除

  8. mkdir新建一個目錄,就是新建一個資料夾

  9. rm-r刪除一個資料夾,rm -r src刪除src目錄

    rm -rf ==切勿在Linux中嘗試!!!==刪除電腦中全部檔案

10.mv 移動檔案,mv A B是我們要移動的檔案,A為要被移動的檔案,B為目的地檔案。

11.history 檢視歷史命令

12.help幫助

13.exit退出

1.3Git的配置

所有的配置檔案,其實都儲存在本地

檢視不同級別的配置檔案

#檢視系統config
git config --system --list
#檢視當前使用者(global)配置
git config --global --list

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/OsyhlE7JKa

#設定使用者名稱
git config --global user.name "xx"
#設定郵箱
git config --global user.email "xx"

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/dBaO32ElGhdi.png

2.Git基本理論

2.1工作區域

Git本地有三個工作區域:工作目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Respository或Git Directory)。如果在加上遠端的git倉庫(Remote Directory)就可以分為四個工作區域。檔案就在這四個區域之間的轉換關係如下:

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/mUJl0gECjQkm.png

  • Workspace: 工作區,就是你平時存放專案程式碼的地方
  • Index/Stage 暫存區,用於臨時存放你的改動,事實上它只是一個檔案,儲存即將提交到檔案列表資訊
  • Repository 倉庫區(或本地倉庫),就是安全存放資料的位置,這裡面有你提交到所有版本的資料。其中HEAD指向最新放入倉庫版本
  • Remote 遠端倉庫,託管程式碼的伺服器,可以簡單的認為是你專案組中的一臺電腦用於遠端資料交換

本地的三個區域確切的說應該是git倉庫中HEAD指向的版本:

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/T!fVBO6GAqjw.png

  • Directory:使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作空間和Git的管理空間。
  • WorkSpace:需要通過Git進行版本控制的目錄和檔案,這些目錄和檔案組成了工作空間。
  • .git:存放Git管理資訊的目錄,初始化倉庫的時候自動建立。
  • Index/Stage:暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。
  • Local Repo:本地倉庫,一個存放在本地的版本庫;HEAD會只是當前的開發分支(branch)。
  • Stash:隱藏,是一個工作狀態儲存棧,用於儲存/恢復WorkSpace中的臨時狀態。

3.工作流程

git的工作流程一般是這樣的:

1.在工作目錄中新增、修改檔案;–>新建了一個UserMapper.xml檔案

2.將需要進行版本管理的檔案放入暫存區域; ——>git add.

3.將暫存區域的檔案提交到git倉庫。 ——>git commit

因此,git管理的檔案有三種狀態:已修改(modified),已暫存(staged),已提交(committed)

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/wxB7I*nS@hRm.png

4.Git專案搭建

建立工作目錄與常用指令

工作目錄(WorkSqace)一般就是你希望Git幫助你管理的資料夾,可以是你專案的目錄,也可以是一個空目錄,建議不要有中文,日常使用只要記住下圖6個命令:

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/WpLW5wQSyrhm.jpg

本地倉庫搭建

建立本地倉庫的方法有兩種:一種是建立全新的倉庫,另一種是克隆遠端倉庫。

1.建立全新的倉庫,需要用git管理的專案的根目錄執行:

#在當前目錄新建一個git程式碼庫
$ git init

2.執行之後可以看見僅在專案目錄多出了一個.git目錄,關於版本等的所有資訊都在這個目錄裡面。

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/IkDmEr!^OMsh.png

克隆遠端倉庫

1.另一種方式是克隆遠端目錄,由於是將遠端伺服器上的倉庫完全映象一份至本地。

#克隆一個專案和它的整個程式碼歷史(版本資訊)
$ git clone [url]

例如

$ git clone https://gitee.com/qianzhongxin/picture.git

5.Git檔案操作

檔案4種狀態

版本控制就是對檔案的版本控制,要對檔案進行修改、提交等操作,首先要知道檔案當前在什麼狀態,不然可能會提交了現在還不想提交的檔案,或者要提交的檔案沒提交上。

  • Untracked: 未跟蹤, 此檔案在資料夾中, 但並沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為Staged.
  • Unmodify: 檔案已經入庫, 未修改, 即版本庫中的檔案快照內容與資料夾中完全一致. 這種型別的檔案有兩種去處, 如果它被修改, 而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked檔案
  • Modified: 檔案已修改, 僅僅是修改, 並沒有進行其他的操作. 這個檔案也有兩個去處, 通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過, 返回到unmodify狀態, 這個git checkout即從庫中取出檔案, 覆蓋當前修改 !
  • Staged: 暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的檔案和本地檔案又變為一致, 檔案為Unmodify狀態. 執行git reset HEAD filename取消暫存, 檔案狀態為Modified

檢視檔案狀態

上面說檔案有4種狀態,通過如下命令可以檢視到檔案的狀態:

#檢視指定檔案狀態
git status [filename]

#檢視所有檔案狀態
git status

# git add .                  新增所有檔案到暫存區
# git commit -m "訊息內容"    提交暫存區中的內容到本地倉庫 ('-m':提交資訊)

例如:

$ git commit -m "new file hello.txt"
忽略檔案

前端的專案中 npm_moudles 肯定不要打包進去的

有些時候我們不想把某些檔案納入版本控制中,比如資料庫檔案,臨時檔案,設計檔案等

在主目錄下建立".gitignore"檔案,此檔案有如下規則:

  1. 忽略檔案中的空行或以井號(#)開始的行將會被忽略。
  2. 可以使用Linux萬用字元。例如:星號(*)代表任意多個字元,問號(?)代表一個字元,方括號([abc])代表可選字元範圍,大括號({string1,string2,…})代表可選的字串等。
  3. 如果名稱的最前面有一個感嘆號(!),表示例外規則,將不被忽略。
  4. 如果名稱的最前面是一個路徑分隔符(/),表示要忽略的檔案在此目錄下,而子目錄中的檔案不忽略。
  5. 如果名稱的最後面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非檔案(預設檔案或目錄都忽略)。
#為註釋
*.txt        #忽略所有 .txt結尾的檔案,這樣的話上傳就不會被選中!
!lib.txt     #但lib.txt除外
/temp        #僅忽略專案根目錄下的TODO檔案,不包括其它目錄temp
build/       #忽略build/目錄下的所有檔案
doc/*.txt    #會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

6.使用碼雲

1.設定本機繫結SSH公鑰,實現免密碼登入。(免密碼登入,這一步挺重要的,碼雲是遠端倉庫,我們是平時工作在本地倉庫!)

#進入 C:\Users\lenovo\.ssh
#使用 mkdir ~/.ssh 生成 '.ssh'

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/6ZA37EOMRA16.png

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/MippvRvZ0g!B.png

2.將公鑰資訊public key 新增到碼雲賬戶中即可!

https://gitee.com/qianzhongxin/picture/raw/master/部落格/Git操作及使用/圖床/YzO*H!WM1byC.png

3.使用碼雲建立一個自己的倉庫!

4.克隆到本地

6.IDEA中整合Git

1.新建專案,繫結git。

  • 將我們遠端的git檔案目錄拷貝到專案中即可!

image-20201231000700448

  • 注意觀察Idea中的變化

2.修改檔案,使用IDEA操作git。(IDEA版本是2020.1)

7.Git分支

git分支中常用指令:

# 列出所有本地分支
git branch

# 列出所有遠端分支
git branch -r

# 新建一個分支,但依然停留在當前分支
git branch [branch-name]

# 新建一個分支,並切換到該分支
git checkout -b [branch]

# 合併指定分支到當前分支
git merge [branch]

# 刪除分支
git branch -d [branch-name]

# 刪除遠端分支
git push origin --delete [branch-name]$ git branch -dr [remote/branch]

IDEA中從操作

如果同一個檔案在合併分支時都被修改了則會引起衝突:解決的辦法是我們可以修改衝突檔案後重新提交!選擇要保留他的程式碼還是你的程式碼!

master主分支應該非常穩定,用來發布新版本,一般情況下不允許在上面工作,工作一般情況下在新建的dev分支上工作,工作完後,比如上要釋出,或者說dev分支程式碼穩定後可以合併到主分支master上來。