Git基本命令
- 1. 常用(迷糊)命令-冷知識
- 2. git 配置
- 2.1 設置 配置文件
- 2.2 查看 配置文件--git config -l
- 2.3 移除 配置文件設置--unset
- 2.3 命令別名 --alias
- 3.git 對象 (git底層操作命令)
- 3.1 初始化一個版本庫
- 3.2 新建一個簡單的blob 對象
- 3.3 基于散列值查看文件內容 git cat-file -p xxx
- 3.4 查看文件關聯-git ls-files -s
- 3.5 樹對象創建git write-tree
- 3.6創建提交對象 git commit-tree
- 3.7創建標簽git tag
- 3.文件操作
- 3.1 文件狀態 git status
- 3.2 從add 列表中刪除暫存文件git rm --cached
- 3.3查看整個歷史記錄
1. 常用(迷糊)命令-冷知識
- git commit 不加-m 自助打開編輯器,用于輸入改次提交的注釋。
- git diff commit1 commit2 (commit1 是基準)
- git show-branch --more=10 (查看當前分支簡潔單行commit 摘要信息)
- git show 對象名 # 查看對象的信息
- git mv 實現文件重命名
- git clone public_repo my_repo (命令在本地也能創建原始庫public_repo的完整副本)
- git rev-parse 3b18e512 # 依據(前綴、標簽、相對名)查看對象的完整散列值
- git add 暫存一個文件,也叫緩存一個文件,或者叫,把文件放進索引。
- git hash-object file 直接計算一個文件的hash值
10.沒有填提信息,不會產生新的提交Aborting commit due to empty commit message.
2. git 配置
2.1 設置 配置文件
git配置文件采用.ini文本文件。配置文件的位置不同,文件的優先級不同,導致實際的作用域不同。(這些配置文件可能不存在,需要自己創建)
.git/config #(工作目錄)版本庫特定配置,–file 修改改配置文件,優先級最高。
~/.gitconfig #(用戶根目錄)用戶特定的配置,–global 選項修改配置文件。
/etc/gitconfig # 系統范圍的配置文件, --system 修改配置文件。(優先級最低)
例如:要創建一個作者名和email 地址,用于所有版本庫的所有提交。相應的配置文件修改命令。
git config --global user.name “cyy”
git config --global user.email “cyy@163.com”
又如:為一個版本庫設置特定的名字和email地址, 覆蓋–global設置。
git config user.name “cyy1”
git config user.email “cyy1@163.com”
2.2 查看 配置文件–git config -l
git config -l # 列出配置文件的內容
cat .get/config # 直接查看相應配置文件的內容
2.3 移除 配置文件設置–unset
git config --unset --global user.email # 移除全局的email 設置。
2.3 命令別名 --alias
經常輸入一條常用而且負責的Git 命令,可以考慮為它設置一個別名。(通過修改配置文件)
git commit --global alias show-graph ‘log --graph --abbrev-commit --pretty=oneline’
#how-graph 為 log --graph --abbrev-commit --pretty=oneline 命令的別名。兩者作用一致
3.git 對象 (git底層操作命令)
對象庫是git 實現版本控制的核心。git 對象庫中包含4類對象:塊(blob), 目錄樹(tree),提交(commit), 標簽(tag)。
初始化版本庫后,創建了一些git必須的模版目錄。一般情況下不需要操作或者查看.git 目錄下的文件。
3.1 初始化一個版本庫
chenyingying01@cyy git-test % mkdir hello
chenyingying01@cyy git-test % cd hello
chenyingying01@cyy hello % git init
chenyingying01@cyy hello % find .
.
./.git
./.git/config
./.git/objects # 本目錄存放所有Git對象的目錄
./.git/objects/pack
./.git/objects/info
./.git/HEAD
./.git/info
./.git/info/exclude
# .......
3.2 新建一個簡單的blob 對象
chenyingying01@cyy hello % echo "hello world" > hello.txt
chenyingying01@cyy hello % ls -hl
total 8
-rw-r--r-- 1 chenyingying01 staff 12B 8 28 11:35 hello.txt
chenyingying01@cyy hello % git add hello.txt
chenyingying01@cyy hello % find .git/objects
.git/objects
.git/objects/3b # 散列值的第一個字節成為一個目錄,可以提高文件系統的效率
.git/objects/3b/18e512dba79e4c8300dd08aeb37f8e728b8dad # 基于hello.txt內容計算的十六進制文件名放入對象庫
.git/objects/pack
.git/objects/info
3.3 基于散列值查看文件內容 git cat-file -p xxx
chenyingying01@cyy hello % git cat-file -p 3b18e512dba79e4c8300dd08aeb37f8e728b8dad
hello world
chenyingying01@cyy hello % git rev-parse 3b18e512 # 依據前綴查看對象的完整散列值
3b18e512dba79e4c8300dd08aeb37f8e728b8dad
3.4 查看文件關聯-git ls-files -s
chenyingying01@cyy hello % git ls-files -s
100644 3b18e512dba79e4c8300dd08aeb37f8e728b8dad 0 hello.txt
3.5 樹對象創建git write-tree
創建 文件散列值-文件真實名 的對應列表(構成一棵結構樹)樹的散列值和文件列表的內容相關。
chenyingying01@cyy hello % git write-tree
68aba62e560c0ebc3396e8ae9335232cd93a3f60
chenyingying01@cyy hello % find .git/objects
.git/objects
.git/objects/68
.git/objects/68/aba62e560c0ebc3396e8ae9335232cd93a3f60
.git/objects/3b
.git/objects/3b/18e512dba79e4c8300dd08aeb37f8e728b8dad
.git/objects/pack
.git/objects/info
chenyingying01@cyy hello % git cat-file -p 68aba6
100644 blob 3b18e512dba79e4c8300dd08aeb37f8e728b8dad hello.txt
3.6創建提交對象 git commit-tree
chenyingying01@cyy hello % echo -n "commit a file that says hello\n" | git commit-tree 492413269
ff88f59f431c62619b961be4c27efb08506869de
chenyingying01@cyy hello % git cat-file -p ff88f5
tree 492413269336d21fac079d4a4672e55d5d2147ac
author chenyingying01 <chenyingying01@cyy.local> 1630212176 +0800
committer chenyingying01 <chenyingying01@cyy.local> 1630212176 +0800commit a file that says hello
3.7創建標簽git tag
(不知道標簽有啥作用) 給某個提創建一個tag。
chenyingying01@cyy hello % git tag -m "Tag version 1.0" V1.0 49241326 # 帶注釋的標簽
chenyingying01@cyy hello % git rev-parse v1.0 # 標簽的散列值
a0f511a7c20b6ab5e6040dbc1e581b5c232bf3d6
chenyingying01@cyy hello % git cat-file -p a0f511 # 查看散列值對應的內容
object 492413269336d21fac079d4a4672e55d5d2147ac
type tree
tag V1.0
tagger chenyingying01 <chenyingying01@cyy.local> 1630212527 +0800Tag version 1.0
chenyingying01@cyy hello %
在實際使用時,應該跳過底層git write-tree 和 git coomit-tree 步驟,只使用git commit 命令
塊(blob)–文件存儲,文件名為散列值
目錄樹(tree)–文件散列值-文件真實名的對應列表(構成一棵結構樹)
提交(commit)–
標簽(tag)–不知道有啥用,且往下看。
3.文件操作
3.1 文件狀態 git status
changes to be committed # add 后無更改changed but not updated # add 后又更改了untracked files # 沒有add 過的文件。
3.2 從add 列表中刪除暫存文件git rm --cached
git rm --cached file
git ls-files --stage # 查看暫存列表
3.3查看整個歷史記錄
git log --follow file