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