前端 技術之 Git&GitHub

来源:https://www.cnblogs.com/20200606loo/archive/2020/05/29/12990265.html
-Advertisement-
Play Games

前端 技術之 Git&GitHub 第一章Git 操作 一、分散式版本控制系統在 這類系統如 Git 、BitKeeper , 客戶端並不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來 。這麼一分散式的版本控制系統在管理項目時 存放的不是項目版本與版本之間的差異 它存的是索引 所需磁碟空間很 ...


前端 技術之 Git&GitHub

第一章Git 操作

一、分散式版本控制系統在 這類系統如 Git  、BitKeeper , 客
戶端並不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來 。這麼一分散式的版本控制系統在管理項目時 存放的不是項目版本與版本之間的差異 它存的是索引 所需磁碟空間很少 所以每個客戶端都可以放下整個項目的歷史記錄分散式的版本控制系統出現之後 解決了集中式版本控制系統的缺陷

1. 斷網的情況下也可以進行開發 因為版本控制是在本地進行的
2. 使用 github 進行團隊協作 哪怕 github 掛了 每個客戶端保存。
的也 都是整個完整的項目 包含歷史記錄的。

Windows 上安裝:https://git-scm.com/download/win

在 Mac 上安裝:git地址 https://git scm.com/download/mac

 二、Git 初始化配置
一般在新的系統上,我們都需要先配置下自己的 Git 工作環境。配置工作只需一
次,以後升級時還會沿用現在的配置。當然,如果需要,你隨時可以用相同的命令修
改已有的配置。
Git 提供了一個叫做 git config 的 命令 來配置或讀取相應的工作環境變數而正是由
這些環境變數,決定了 Git 在各個環節的具體工作方式和行為。這些變數可以存放
在以下三個不同的地方:
/etc/gitcon fig 文件:系統中對所有用戶都普遍適用的配置。若使用 git

更多 Java –大數據 –前端 –python 人工智慧資料下載,可百度訪問:尚矽谷官網
config 時用 system 選項,讀寫的就是這個文件。
~/.gitconfig 文件:用戶目錄下的配置文件只適用於該用戶。若使用 git
config 時用 global 選項,讀寫的就是這個文件。
.git/config 文件 當前項目的 Git 目錄中的配置文件(也就是工作目錄
中的 .git/config 文件)這裡的配置僅僅針對當前項目有效。每一個級別的配置都會覆蓋上層的相同配置

配置內容:用戶信息

第一個要配置的是你個人的用戶名稱和電子郵件地址。這兩條配置很重要,每次 Git 提交時都會引用這兩條信息,說明是誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:
git config global user.name damu
git config global user.email damu @example.com
要檢查已有的配置信息,可以使用 git config --list 命令 刪除配置信息 git config g lobal u nset user.email

 

Git 底層概念(底層命令): 基礎的 linux 命令
clear:清除屏幕
echo 'test content':往控制台輸出信息 echo 'test content' > test.txt
ll:將當前目錄下的 子文件 子目錄平鋪在控制台
find目錄名 將對應目錄下的子孫文件 子孫目錄平鋪在控制台
find目錄名 type f :將對應目錄下的文件平鋪在控制台
rm文件名 刪除文件
mv源文件 重命名文件 : 重命名
cat文件的 url : 查看對應文件的內容
vim文件的 url( 在英文模式下)
按 i 進插入模式 進行文件的編輯
按esc 鍵 按 鍵 進行命令的執行
q! 強制退出(不保存)
wq 保存退出
set nu 設置行號


初始化新倉庫
命令:git init
解析: 要對現有的某個項目開始用 Git 管理,只需到此項目所在的目錄,執行: git init
作用: 初始化後,在當前目錄下會出現一個名為 .git 的目錄(如果沒有看到點擊文件上方的菜單欄的查看√隱藏的項目就可以看見.git文件了),所有 Git 需要
的數據和資源都存放在這個目錄中。不過目前,僅僅是按照既有的結構框架初始化
好了裡邊所有的文件和目錄,但我們還沒有開始跟蹤管理項目中的任何一個文件。

 

.git文件目錄的各個文件的含義如下:

hooks 目錄 包含客戶端或服務端的鉤子腳本;
info 包含一個全局性排除文件;
logs 保存日誌信息;
objects 目錄存儲所有數據內容;
refs 目錄存儲指向數據的提交對象的指針(分支);
config 文件包含項目特有的配置選項;
description 用來顯示對倉庫的描述信息;
HEAD 文件指示目前被檢出的分支;
index 文 件保存暫存區信息;

 

git 對象
Git 的核心部分是一個簡單的鍵值對資料庫 。 你可以向該資料庫插入任意類型
的內容,它會返回一個鍵值,通過該鍵值可以在任意時刻再次檢索該內容。
1、向資料庫寫入內容 並返回對應鍵值
命令:echo 'test content' | git hash-object -w --stdin
-w 選項指示 hash-object 命令存儲數據對象;若不指定此選項,則該命令僅返回對應的鍵值
--stdin(standard input)選項則指示該命令從標準輸入讀取內容;若不指定此選項,則須在命令尾部給出待存儲文件的路徑
git hash-object -w 文件路徑
存文件
git hash-object 文件路徑
返回對應文件的鍵值
d670460b4b4aece5915caf5c68d12f560a9fe3e4
返回:該命令輸出一個長度為 40 個字元的校驗和。 這是一個 SHA-1 哈希值

2、 查看 Git 是如何存儲數據的
命令:find .git/objects -type f 返回:.git/objects/d6/70460b4b4aece5915caf5c68d12f560a9fe3e4
這就是開始時 Git 存儲內容的方式:一個文件對應一條內容。校驗和的前兩個字元用於命名子目錄,餘下的 38 個字元則用作文件名。

3、根據鍵值拉取數據
命令:git cat-file -p d670460b4b4aece5915caf5c68d12f560a9fe3e4
-p 選項可指示該命令自動判斷內容的類型,併為我們顯示格式友好的內容
返回:對應文件的內容


對一個文件進行簡單的版本控制
1、創建一個新文件並將其內容存入資料庫
命令:echo 'version 1' > test.txt
git hash-object -w test.txt
返回:
83baae61804e65cc73a7201a7252750c76066a30 

2、 向文件里寫入新內容,並再次將其存入資料庫
命令:echo 'version 2' > test.txt
git hash-object -w test.txt
返回:1f7a7a472abf3dd9643fd615f6da379c4acb3e3a

3、查看資料庫內容
命令:
find .git/objects
type f
git cat
file p 83baae61804e65cc73a7201a7252750c76066a30
git cat
file p 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
git cat
file t 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
利用 cat-file -t 命令,可以讓 Git 告訴我們其內部存儲的任何對象類型
返回:blob
問題:
1. 記住文件的每一個版本所對應的 SHA-1 值並不現實
2. 在Git中,文件名並沒有被保存——我們僅保存了文件的內容
解決方案:樹對象
註意:當前的操作都是在對本地資料庫進行操作 不涉及暫存區

構建樹對象
樹對象( tree object ),它能解決文件名保存的問題,也允許我們將多個文件
組織到一起 。 Git 以一種類似於 UNIX 文件系統的方式存儲內容 。 所有內容均以
樹對象和數據對象 (git 對象 的形式存儲,其中樹對象對應了 UNIX 中的目錄項,
數據對象 (git 對象 則大致上對應文件內容 。 一個樹對象包含了一條或多條記錄 每條記錄含有一個指向 git 對象或者子 樹對象的 SHA 1 指針 以及相應的模式、類
型、文件名信息 )。 一個樹對象 也可以 包含 另一個樹對象。
我們可以通過update-index;write-tree;read-tree等命令來構建樹對像並塞入到暫存區。
假設我們做了一系列操作之後得到一個樹對像。

操作
1. 利用update -index 命令 為 test.txt 文件的首個版本——創建一個暫存區。並通過write-tree 命令 生成樹對像。
命令:git update index add cacheinfo 100644\
83baae61804e65cc73a7201a7252750c76066a30 test.txt
git write-tree
文件模式為 100644 ,表明這是一個普通文件
100755,表示一個可執行文件
120000 ,表示一個符號鏈接 。
--add 選項因為此前該文件並不在暫存區中首次需要 add
--cacheinfo 選項因為將要添加的文件位於Git 資料庫中,而不是位於當前目錄下 所有需要 cacheinfo

2. 新增new.txt 將new.txt 和 test.txt 文件的第二個個版本塞入暫存區。並通過write-tree 命令 生成樹對像。
命令:echo 'new file' > new.txt
git updateindex cacheinfo 100644\1f7a7a472abf3dd9643fd615f6da379c4acb3e3a test.txt
git- update-index --add new.txt
git write-tree

3. 將第一個樹對象加入第二個樹對象,使其成為新的樹對象
命令:git read-tree
--prefix=bak d 8329fc1cc938780ffdd9f94e0d364e0ea74f579
git write-tree
read-tree 命令,可以把樹對象讀入暫存區。

尚矽谷前端 技術之 Git&GitHub    鏈接:https://share.weiyun.com/hWHc9ABJ 密碼:n6e4yv

 

更多IT知識可以找我探討我的vx:cmL46679910

Q:1820836501


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在前面隨筆《循序漸進VUE+Element 前端應用開發(3)--- 動態菜單和路由的關聯處理》中介紹了在Vue + Element整合框架中,實現了動態菜單和動態路由的處理,從而可以根據用戶角色對應的菜單實現本地路由的過濾和綁定,菜單順利弄好了,就需要進一步開發頁面功能了,本篇隨筆介紹一個案例,通... ...
  • 功能需求 1.圖片轉base64 2.base 64 轉二進位數組 3.保存二進位數據到文件下載到本地 解決方法 問題1: 參考資料 vue element upload圖片 轉換成base64 具體代碼 getBase64(file) { return new Promise(function ( ...
  • 1、css概述 主要的使用場景就是美化網頁,佈局頁面 (1)html的局限性 它只關註內容的語義,只能做一些簡單的樣式,並且非常的臃腫和繁瑣 (2)css對網頁美化的作用 css是層疊樣式表的簡稱,它和html是一樣的,都是一種標記語言,css主要用於設置html頁面的文本內容(字體、大小、對齊方式 ...
  • 我們可以看到一些織夢dedecms網站上的搜索框內有預設的欄位,但我們滑鼠點擊後就沒有了。家電清洗我也想在我的網站的搜索框內實現這樣的效果,於在網上搜尋一番,終於找到實現這一效果的方法。 方法如下: <input name="keyword" id="keyword" type="text" cla ...
  • Singleton Pattern 屬於創造型設計模式,提供一種創建對象的方法,涉及一個單一類的實例,確保一個類只創建一個對象,提供訪問唯一對象的方法,可以直接訪問,不需要創建。 單一類只有一個實例 類必須自己創建自己的實例 給其他調用對象提供訪問該類實例的方法 目的:一個類只創建一個實例 優點:減 ...
  • 如何通過 X-Forwarded-For 拿到用戶真實 IP ...
  • 不要說精通Java、Spring,能掌握70%就很不錯了,其他的高級特性。。。 我們平常開發java程式時,總想開發一個代理程式監視記錄類的運行情況,比如性能監控或運維人員很需要,比如調用業務方法時記錄日誌、計時等,除了AOP實現之外,還有一種實現,那就是基於java高級特性Instrumentat ...
  • 一、註釋(類似於Java) 1./*註釋內容*/ 2.//註釋內容(這種只允許單行註釋) 二、頭文件 1.#include<>是C預處理指令(preprocessor directive),C編譯器會在編譯前會對源碼做一些準備工作,即預處理(preprocessing). 2.頭文件:在C程式的頂部 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...