1. 程式人生 > >Git 學習筆記(基礎篇)

Git 學習筆記(基礎篇)

1. 命令初識

檢視GIT版本

git --version

在Global級別設定UserName(推薦使用)

git config --global user.name ’Freud Kang‘ 

在當前目錄界別設定UserName(優先順序高)
git config user.name 'Freud Kang'

在Global級別設定UserEmail
git config --global user.email ’[email protected]

初始化一個GIT Repository(倉庫)
git init 

下載遠端程式碼倉庫

git clone remote_url

新增file到.git/index空間Staging area

git add ‘file’ 

提交所有修改到Repository
git commit -m ’Commens For Commit‘

講此目錄下所有修改的檔案新增到Staging area並提交

git commit -a -m ’Commens For Commit‘

在GIT倉庫中刪除檔案
git rm 'file'

(LINUX)sha1 file 檢視sha1加密後的檔案值(20byte即160bit~2的160次方種情況)

從Repository中檢出在工作目錄丟失或者誤操作的檔案。

git checkout -f HEAD  || git checkout -f fileName

檢視檔案在經過SHA1加密後的字串

git hash-object ’FileName‘

檢視反加密後的檔案內容

(BLOB)git show ’SHA1加密字串(只需唯一標識此欄位的前幾位即可)‘ 

 檢視反加密後的Tree物件的內容

(TREE)git ls-tree ’SHA1加密字串(只需唯一標識此欄位的前幾位即可)‘

檢視反加密後的Commit物件的內容

(COMMIT)git show -s --pretty=raw ’SHA1加密字串(只需唯一標識此欄位的前幾位即可)‘


檢視此物件的型別(BLOB.TREE.COMMIT)

git cat-file -t ’SHA1加密字串(只需唯一標識此欄位的前幾位即可)‘

查詢此目錄下的FILE型別的檔案

find ./git/objects/ -type f 

查詢此目錄下Directory型別的檔案

find ./git/objects/ -type d

統計FILE型別的檔案個數

find ./git/objects/ -type f | wc -l 

給當前最新的commit打一個TAG(輕量級),物件個數不會增加,只是會在.git/refs/tags/tagname檔案中新增一個Commit HASH Code的引用

git tag “tag_name” 

 給當前最新的commit打一個TAG(重量級),會在.git/objects下生成一個新的tag物件,並在.git/refs/tags/tagname檔案中新增一個tag HASH Code的引用(好處:可以新增更多的註釋)

git tag -a 'TAG_NAME' -m 'Commens'

把某個TAG的原始碼打包成為zip檔案,其中目錄為打包後zip的首目錄。

git archive --format=tar --prefix='目錄' Tag_Name | gzip > 檔名

壓縮檔名  解壓縮檔案

tar zxvf 

檢視分支,有*的代表當前工作分支
git branch 

建立分支

git branch ’分支名字‘ 

切換到需要活動的分支

git checkout ’分支名字‘ 

從源分支把程式碼Merge到本分支

git merge ’源分支名字‘

刪除分支(大寫D代表強制刪除,小寫d代表普通刪除)

git branch -D ’分支名字‘  

改名字 (如果有同名會失敗,改用 -M 可以強制覆蓋)
git branch -m <old_name> <new_name> 

切換 branch (注意如果你有檔案修改了卻還沒 commit,會不能切換 branch)
git checkout <branch_name> 

本地建立 branch 並立即 checkout 切換過去
git checkout -b <new_branch_name> (<from_branch_name>) 

刪除 local branch
git branch -d <branch_name> 

刪除遠端Branch
git push origin :{branch_name}

檢出一個遠端的Branch

git checkout -b develop origin/develop

2. Git Area(3種空間)

Working directory工作目錄,指沒有新增到GIT Track中的檔案,GIT不認識此檔案

Staging area階段空間,指新增到GIT的track中但是還沒有Commit過的空間,.git/index指的就是staging area,需要從Working Directory中Add進入此空間

Repository倉庫,指的是本地.git 資料夾下的東西,當Commit之後./git/objects目錄下的物件值得就是此倉庫,需要從Staging Area中Commit進來

3. 物件(Object)一旦修改永遠不可以改變

blob檔案物件:不包含檔名,不包含資料大小

tree目錄物件:包含檔名

commit提交物件:包含Tree物件

TAG物件:可以認為是一個物件或者是引用

4. 引用(Reference)可以動態修改

Branch :master是預設分支,建立完Branch後會在.git/refs/heads/BranchName下有分支名字的檔案,其內容為所指向的Commit物件40位HASH值

HEAD(永遠指向當前活動的Branch)在.git/HEAD檔案中儲存一個引用指向refs/heads/master,此檔案中有HASH值即COMMIT物件的HASH值

Remote Branch

5. Merge

Faster-Forward

Three-Way Merge

NOTES:

.git/objects/**/************* 第一個**指的是SHA1加密後的前兩位,第二個指的是後38位

我的GitHub

https://github.com/luoyan35714

相關推薦

Git 學習筆記基礎

1. 命令初識 檢視GIT版本 git --version 在Global級別設定UserName(推薦使用) git config --global user.name ’Freud Kang‘ 在當前目錄界別設定UserName(優先順序高)git config us

深度學習筆記基礎——線性單元和梯度下降

        在上一篇文章中,我們已經學會了編寫一個簡單的感知器,並用它來實現一個線性分類器。你應該還記得用來訓練感知器的『感知器規則』。然而,我們並沒有關心這個規則是怎麼得到的。本文通過介紹另外一種『感知器』,也就是『線性單元

深度學習筆記基礎——機器學習與深度學習簡介

  機器學習是最基礎的(當下初創公司和研究實驗室的熱點領域之一)。深度學習是非常嶄新和有影響力的前沿領域。 一、定義 1、機器學習    從樣本中學習的智慧程式。是資料驅動的。90年代初提出。強調的是給計算機程式(或者機器)輸入一些資料後,它學習這些資料,而

Angular學習筆記工具----Angular CLI

進入 詳情 基礎 rate 9.png cnpm 基本用法 版本問題 問題 Angular CLI 的作用 首先安裝npm 和node 詳情:http://www.cnblogs.com/gorgeous/p/8074180.html 在安裝 npm in

python3基礎學習筆記基礎知識-01

body 基礎語 弱類型 弱類型語言 class lean 邏輯表達式 列表 浮點型 python的基礎學習:   數據類型:python是弱類型語言,在定義變量的時候,可以不直接制定數據類型。       1、Numbers:             int 有符號整型

JavaScript學習筆記基礎部分

lower 對數 mys row 字符串分割 push 循環 jee document    一、JavaScript簡介:   概念:JavaScript是一種解釋性的、跨平臺的、基於對象的腳本語言,一般用於客戶端來給HTML頁面增加動態的功能。   組成:     1

Linux學習工具基礎

1.為什麼要學習Linux? 不是因為大神都在用,而是因為linux是工作中部署環境必備的基礎技能,比如在docker部署環境。 2.用啥學linux? 1.初始學習階段使用vmware workstation pro。vmware的破解碼網上很多,這裡就不

二叉搜尋樹的原始碼分析學習 筆記基礎

二叉搜尋樹結構 typedef struct bst_tree_node { type key; struct bst_tree_node * left; struct bst_tree_node * right; struct

HTML教程學習筆記第一

學習資料:www.w3cschool.cc   學習日期:2014-11-03 1.DOCTYPE宣告文件型別: HTML5:<!DOCTYPE html> HTML4.01:<!DOCTYPE HTML PUBLIC "-//W3C//DTD H

Opengl es2.0 學習筆記API所有API的翻譯

包含了 gl2.h 和egl.h兩個標頭檔案 gl2.h gl2資料結構 /*------------------------------------------------------------------------- * Data type defi

SpringMvc學習筆記基礎+詳細

本人技術小白,學習SpringMvc後,將相關內容整理下來,供大家分享,歡迎批評指正。 本文主要介紹如下方面相關知識,並分為不同章節,大家可根據自身需求選擇性閱讀: SpirngMvc的HelloWorld(一個SpringMvc例項的簡單流程) 使用@RequestM

《深入分散式快取:從原理到實踐》學習筆記最終

第十四章 典型電商應用與快取 及時響應性的使用者需求 資料準確行需求 平臺海量請求的訴求 高可用訴求 14.1 電商類一個你用的挑戰及特點 穩定性決定服務能力 高併發場景(Scale Out 加機器、Scale Up 提

南郵攻防平臺學習筆記web

1、MD5 collision <?php $md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5($a); if(isset($a)){ if ($a != 'QNKCDZO' &&am

C++學習筆記初級——作用域與“extern”關鍵字

作用域,顧名思義,就是指某個識別符號在程式中的有效區域。 在C++中,按作用域的大小,一般可分為區域性作用域和全域性作用域。 1.區域性作用域 區域性作用域用大括號,即{},來定義,大括號括起來的範圍就是一個區域性作用域。區域性作用域內,一個變數或者函式的有效位置是從其宣告

C++學習筆記第一

第1章 C++基本知識 1.1 宣告類和物件 三種方式 /********************************************** 第一種方式:宣告類的同時定義物件 **************************

Linux學習日誌基礎----VIM末行模式補充、gcc相關

6、vim配置檔案 使用者級別: ~/.vimrc(隱藏的,直接建立即可) 系統級別

XSS學習筆記入門

最近的學習速度挺快的,對於寒假的計劃是對於各種知識點都瞭解大概並且基本懂得原理,在開學之後對相關書籍深入研究! 這裡我就先總結下幾個XSS應用的例子吧。 一.利用< >標記注射html / javascript 如果可以隨心所欲引入< >標記,那麼

oracle學習筆記基礎

一、 Oracle支援表示式 包括:+ - * /     dual(虛表,用於簡單的輸出實驗用) 1.SELECT 5+3,5-3,5*3,5/2  FROM dual; 2.SELECT 'hello,world',100 FROM dual;  3.查員工編號,姓名,工

SQL學習筆記基礎部分

SQL學習筆記 基礎部分 SQL語法 資料庫語言對大小寫不敏感,用分號分隔每條資料庫語言 SQL通用資料型別 SQL開發,在建立SQL表時要確定每個列要儲存的資料型別,每一列都需要一個列名和確定的資料型別 常見資料型別自行查詢 一些重要

uip-學習筆記移植

UIP 1、 uip_input(); 當網絡卡驅動收到一個包時,將包存放於全域性緩衝區uip_buf中,包的大小由全域性變數uip_len約束;同時將呼叫uip_input();該函式會根據包首部的協議處理這個包將該包傳送給需要該包的應用程式;當該函