前端 技術之 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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...