爆肝總結git保姆級教學筆記

2022-02-08 19:00:31
本篇文章給大家帶來了關於git的基礎知識總結的相關知識,其中包括git和github的簡介以及遠端倉庫等相關問題,希望對大家有幫助。

Git

在實際工作中,我們會遇到很多無法預料的問題:

問題一:頻繁改需求。例:

開發功能A - V1

新增功能B - V2

在功能B上新增功能C - 重新寫功能B,再新增功能C - V3

在功能B上新增功能D - 重新寫功能B,再天新增功能D

專案開發好以後,形成版本v1.0
需求改變:
在v1.0的基礎上新增功能A,形成版本v1.1 - 在上個版本的基礎上新增功能A
在v1.0的基礎上新增功能B,形成版本v1.2 - 在上個版本的基礎上刪除功能A,新增功能B
在v1.1的基礎上新增功能C,形成版本v1.3 - 在上個版本的基礎上刪除功能B,新增功能A,再新增功能C
在v1.2的基礎上新增功能D,形成版本v1.4 - 上個版本的基礎上刪除功能A,刪除功能C,新增功能B,新增功能D

git可以完美解決這個刪除新增的過程。因為git可以將每個版本儲存下來,可以很輕鬆的將當前版本切換到之前的某個版本。

問題二:一不小心將檔案刪除了,還需要重新寫。

在公司寫了一丟丟程式碼,回了家,繼續開發,白天寫的程式碼沒有拷貝回來

使用git的話,如果將某個檔案刪除,形成新的版本,也可以很輕鬆的切換到之前的版本,將刪除的檔案找回來。

問題三:在當前電腦開發好的內容,換了一臺電腦,發現程式碼還需要重新寫

使用git的話,將每次寫好的程式碼,上傳到github網站,只要有網就能下載,相當於備份

問題四:工作中每個人寫好的檔案最後需要合併到一個大檔案中,需要很繁瑣的複製貼上

多人分工開發,最終需要將程式碼合併起來

使用git可以很輕鬆的進行檔案合併

git和github簡介

git:分散式版本控制工具。其實就是一個軟體,來管理資料夾使用的。需要通過命令操作。

github:世界級的開源網站,儲存檔案使用。使用者都是開發者。檔案可以選擇加密,只有自己能用,可以選擇開源,所有人都能用。還可以和作者溝通。只接受git工具上傳。在這個網站上又很多別人寫好的各種語言的程式碼檔案,如果有什麼外掛需要下載,可以在這個網站上搜尋。

git可以管理本地檔案,也可以管理gitgub的檔案。

本地倉庫:在自己電腦上被 git 管理的資料夾

遠端倉庫:線上上管理的資料夾

推播:將原生的內容,上傳到遠端

同步:將線上的內容和本地內容保持一致

專業術語

使用的是git bash here - 使用命令操作

倉庫:是用來儲存程式碼的一個資料夾,這個資料夾被git工具所管理

本地倉庫:本地計算上被git管理的資料夾

遠端倉庫:遠端伺服器上被git管理的資料夾

推播:將本地倉庫中的內容上傳到遠端倉庫 - push

拉取(同步):將遠端倉庫的內容下載到本地一份 - 讓本地倉庫和遠端倉庫保持一致

像百度網路硬碟 - 但是隻能儲存程式碼檔案

像百度貼吧 - 可以進行交友、互粉、點贊…

github.com - 全球最大的同性交友網站 - 國外

本地使用git

下載安裝,檢測是否安裝成功:

git --version

或者點選滑鼠右鍵出現下圖也可以

git安裝成功的標誌
在這裡插入圖片描述

檢視檔案

dir

在這裡插入圖片描述

首先要在被管理的資料夾中進行初始化,才能在這個資料夾中使用git命令管理:

git init
執行結束後,在資料夾中會生成一個 隱藏資料夾 .git;標誌著這個資料夾成為了git倉庫

在這裡插入圖片描述

初始化後,會出現一個隱藏的資料夾.git,此時代表當前這個資料夾及其以下內容都被git管理了。git管理資料夾的時候將管理過程分為3個區域:

  1. 工作區:自己寫的原始檔

    工作區示意圖
    在這裡插入圖片描述
  2. 暫存區:將要儲存的檔案,暫時存在暫存區

    暫存區示意圖
    在這裡插入圖片描述
  3. 歷史區:生成一個版本,只能將暫存區的內容生成版本。上傳的時候只能上傳歷史區的內容

將原始檔新增到暫存區:

git add 檔案 # 將單獨一個檔案新增到暫存區
git add 資料夾/ # 將整個資料夾新增到暫存區(git不管理空資料夾)
git add --all # 將當前資料夾中所有檔案和資料夾都新增到暫存區  -  簡寫:git add .

在這裡插入圖片描述

檢視git管理的檔案的狀態:

git status

在這裡插入圖片描述

將暫存區的檔案拉回到原始檔:

git reset HEAD -- 檔案 # 將某個檔案從暫存區變為原始檔
git reset HEAD -- 資料夾/ # 將整個資料夾從暫存區變為原始檔
git reset HEAD -- . # 將所有檔案從暫存區變為原始檔

在這裡插入圖片描述

將暫存區的內容生成歷史版本:

git commit -m "版本說明"

在這裡插入圖片描述
working tree clean 工作區是乾淨的 轉移歷史區成功!
當將所有暫存區的內容放到歷史區的時候,工作區就是趕乾淨 working tree clean
在這裡插入圖片描述
注意事項:
不能單獨將某一個檔案放到歷史區,一次性會將所有暫存區的內容放到歷史區
只能將暫存區的內容放到歷史區,不能跨步驟(將工作區的內容放到歷史)操作

初次需要設定自己的郵箱和姓名   輸入以下指令
所以解決方法是當出現這個上述提示後 接著補充
你在命令列中執行
git config --global user.email "你的郵箱"
git config --global user.name "你的名字"
(注意 「 前面是有空格的)
輸入完後再接著執行git commit 即可成功!
檢視所有版本資訊:

在這裡插入圖片描述

git log

檢視版本資訊:

版本資訊示意圖
在這裡插入圖片描述

回到指定版本:

git reset --hard HEAD^ # 有幾個上檔鍵就回退幾個版本git reset --hard 歷史版本號

刪除歷史版本:

git rebase -i 指定的歷史版本

刪除歷史版本的坑:

1.刪除的時候不能指定要刪除的版本,需要指定要刪除的版本之前的版本

2.刪除命令執行後,會開啟一個檔案, :wq 敲回車,需要將其中的pick改成drop才能刪除成功
3. 開啟這個檔案以後,是無法進行輸入的,需要按 i a s 進入到插入模式
4. 就可以將單詞進行修改,儲存並退出,按 esc 退出了插入模式,再按 :wq 儲存並退出的意思

兩個特殊檔案

git在進行管理資料夾的時候,不能管理空資料夾,為了避免誤會產生,讓空資料夾被管理,git提供了一個專業的管理空資料夾的檔案 - 名字是固定的:.gitkeep - 將這個檔案放到被管理的空資料夾 - 此時的空資料夾被管理了

如果某些檔案或資料夾不希望被git管理,就可以設定一個黑名單,讓這個檔案或資料夾被忽略掉,此時git提供了一個檔案叫 .gitignore 這個檔案就可以設定黑名單 將需要被忽略掉的檔案的路徑寫在這個檔案中<

讓git能管理一個空資料夾:

在空資料夾中新建檔案:.gitkeep,這個檔案沒有實際意義,這是為了佔位,讓空資料夾能被管理的標識,以後要在資料夾中寫檔案的時候,這個檔案可以被刪除

讓某些檔案或者資料夾被忽略管理:

在和.git同級的位置,新建檔案:.gitignore,在這個檔案中書寫要忽略的內容:

直接寫檔名,代表要忽略的是哪個檔案
寫資料夾路徑,表示要忽略的是哪個資料夾
*.字尾,表示要忽略的是所有字尾為指定字尾的檔案

遠端操作

建立倉庫的時候,可以選擇初始化,也可以選擇不初始化

不初始化

在本地建立倉庫,放到暫存區,形成歷史區

讓本地倉庫和遠端倉庫之間建立連線

git remote add origin https://gitee.com/web_wang_wu/good-man.git

origin是一個變數,可以自定義

將本地倉庫的內容上傳到遠端倉庫:

git push -u origin master

需要輸入賬號密碼:註冊使用的郵箱以及密碼

當下次再次上傳的時候,就不需要輸入賬號密碼了,因為windows已經將這次輸入的賬號密碼儲存起來了

賬號密碼儲存在計算機的 「憑據管理器」 中 ,可以刪除

並且我們下次上傳的時候,只需要執行命令:

git push

選擇初始化

相當於遠端倉庫中已經有內容了
首先,必須先將這個倉庫給本地克隆一份
git clone 遠端倉庫地址 // 遠端倉庫地址後,有一個可選項,代表克隆到原生的資料夾名稱
就在這個資料夾中,進行本地操作,要上傳到遠端
git push
如果我們希望使用一下別人倉庫中的程式碼,就克隆下來

我已經有過上傳的程式碼了,我想修改程式碼,但是本地倉庫不見了

專案經理做好一個專案的倉庫,我需要根據這個倉庫中已知的檔案進行二次開發

在這裡插入圖片描述

遠端倉庫

上傳到遠端倉庫:

在github上新建倉庫:

在這裡插入圖片描述

| [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-pyFfquEl-1622645729955)(media/1568646397296.png)] |](https://img-blog.csdnimg.cn/20210602230131213.png)

使用https上傳:

新增上傳地址:

git remote add origin https://github.com/weberWangjie/test.git # 其中的origin是變數名錶示上傳地址,可以自定義

開始上傳:

git push -u origin master # 其中的origin是表示地址的那個變數名

首次推播遠端需要輸入使用者名稱和密碼。

第二次上傳的時候只需要:git push

將遠端程式碼拉取到本地:(要先新建一個資料夾作為git管理的資料夾)

git clone 遠端倉庫地址

將原生程式碼和遠端程式碼同步:(在本地倉庫使用命令)

git pull

分支

一個大專案,會分很多人開發,每個人一個功能,這時候,每個功能作為一個分支,主分支只有目錄結構。當所有人將自己負責的功能開發完成的時候,再將所有分支合併到主分支上,形成一個完整的專案。

每次初始化一個git的時候,預設建立一個主要分支:master

建立分支:

git branch 分支名

檢視當前分支:

git branch

切換分支:

git checkout 分支名

建立並切換到這個分支:

git checkout -b 新分支名

合併分支:(將別的分支合併到自己分支)

git merge 要合併的分支

刪除分支:(不能自己刪自己)

git branch -D 要刪除的分支

衝突

在專案開發階段,有兩個人同時操作一個倉庫,最終總會有一個人先上傳, 一個人後上傳,先上傳的能成功,後上傳的不能成功

因為,git遠端倉庫中,任何一個版本的形成,都需要從上一個版本 作為基礎 再形成新的版本
如果推播不成功,就需要在本地先有遠端的版本2,然後再形成版本3,推播才能成功

同步/拉取

git pull // 讓本地先跟遠端保持一致,然後再次推播新版本
遠端倉庫中,任何一個新版本,都必須是基於上一個版本形成的,跳版本形成:李四 - 1~3 必須是2~3

同步:

在本地新建一個跟遠端分支同名的分支名,本地切換過去,git pull

失敗,提示命令:

git branch --set-upstream-to=origin/遠端的分支名 原生的分支名

繼續git pull

提交:

在本地新建了分支,希望推播到遠端倉庫,失敗,提示命令:

git push --set-upstream origin 遠端的分支名

git add .

git commit -m 「版本描述」 # 為了避免程式碼丟失,一定要寫完以後 commit一下

git push

git pull

git clone 遠端倉庫地址

遠端分支操作 - 給別人提交

在這裡插入圖片描述

兩個人同時操作同一個分支,提交的時候會有先後順序,先提交的人正常提交了,後一個人提交的時候會產生衝突。因為git規定,每次提交必須是在原來的版本基礎上,但是第二個人在提交的時候,在遠端已經有了第二個版本,所以第二個人相當於從第一個版本向第三個版本提交。如下圖:

git衝突示意圖
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-MwEAsKNu-1622645729956)(media/1568718158656.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-h0kuUYTn-1622645729958)(media/1568719059777.png)]

衝突解決:

  1. 使用命令讓本地和遠端同步:

    git pull

    然後手動解決檔案衝突

  2. 開闢新的分支,然後進行分支合併

    git fetch origin master:tmp # 使用 fetch 獲取遠端最新資訊並開闢一個臨時分支
    git diff tmp # 將當前分支和遠端分支進行對比
    git merge tmp # 將臨時分支合併到當前分支

歷史版本回滾的衝突

本地先形成版本1

本地再形成版本2

上傳到遠端

本地回滾到版本1

再次形成版本1·2

再次上傳

報錯

因為遠端倉庫只有一條時間線,但本地有兩條,解決:

先拉取,解決衝突問題

再次上傳

分支遠端操作

預設不能提交其他分支,因為,遠端預設提交為master分支。

如果非要提交其他分支:

git --set-upstream push origin 分支名 # 將以前記錄的-u預設的master改為新的分支名
git push origin 分支名 # 臨時提交,不改預設的master

本地跟遠端倉庫進行除了master分支之外的分支,進行推播、同步,多執行一個命令,報錯提示的命令。

刪除遠端分支:

git push origin --delete 將要刪除的分支名

github伺服器分支

github上一個特殊的分支:gh-pages

只要有這個分支,就可以將這個分支中的程式碼作為一個伺服器開啟其中的檔案。預設開啟index.html檔案,其他名稱的檔案需要手動輸入。

有了這個分支之後,就可以在這個倉庫的setting中,找到開啟這個分支中檔案的伺服器連結。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-MKCYDwkG-1622645729959)(media/1622438192425.png)]

在這裡插入圖片描述

分支命名規範

master是主分支,建立倉庫的時候預設生成。不接收任何上傳,只接收dev分支合併的內容,這個分支只儲存每一次開發過程中經過測試合格的程式碼。

dev是開發主分支,也可以說development/deve,初始化專案後,從master分支上開闢的新分支。這個分支也不接受任何程式碼提交,只接收主功能分支合併的內容。當dev分支上的程式碼測試通過以後,會被合併到主分支上。

feature-XXX是主功能分支,是從dev分支上開闢出的分支,進行各個功能的開發,開發完成後合併到dev分支上進行測試,這些分支接收開發的程式碼提交。

feature-XXX-fix-XXX是功能bug解決分支,在專案執行過程中,出現的bug進行修復,是從功能分支上開闢出來的,修改完畢後合併到功能分支上,再由功能分支合併到dev分支上。

hot-fix-XXX是緊急bug修復分支,直接從master上開闢,修復緊急bug後,直接合併到master分支上。

SSH提交設定祕鑰

github上傳除了使用https協定上傳,也可以使用ssh協定來上傳。ssh上傳需要設定公鑰和祕鑰,公鑰和祕鑰是設定在自己計算機上的,所以使用了ssh之後,只能在當前計算機使用了,不像https上傳,在任何電腦上都能上傳。

但是ssh上傳需要配合祕鑰。

祕鑰設定:

ssh-keygen -t rsa -C "git全域性郵箱"# 敲3次回車

檢視git全域性設定:

git config --list

祕鑰所在資料夾:C:\Users\Admin\.ssh

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-D8O8JHNQ-1622645729964)(media/1622435818971.png)]

上面的祕鑰,下面字尾為pub的是公鑰,需要將公鑰設定在github賬號中。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-5dkB3oAw-1622645729965)(media/1622437704017.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-TVlkZ6Tx-1622645729967)(media/1622437792781.png)]

開啟之後,title項中自定義,key中將公鑰檔案中的所有內容複製過來。

點選新增按鈕後,需要輸入密碼驗證。

此時就將ssh設定好了,後面就可以使用ssh協定進行操作了。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-nk3QOdGe-1622645729968)(media/1622438047048.png)]

以後就可以使用這個地址進行克隆和上傳了。

推薦學習:《》

以上就是爆肝總結git保姆級教學筆記的詳細內容,更多請關注TW511.COM其它相關文章!