这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记
Git基本命令
1. 初始化仓库
git init
其他参数
-
--initial-branch 初始化的分支,不指定默认为master,可以指定为main
-
--bare 创建一个裸仓库(纯Git目录,没有工作目录)
-
--template 可以通过模板来创建预先构建好的自定义git目录 Git目录介绍
-
查看Git目录
tree .git
- HEAD 当前分支
cat .git/HEAD
-
config 存放当前仓库的配置
-
objects 存储文件信息
-
refs 存储分支信息
2. Git Config
- 三种级别的Git配置
- 全局配置
--global 存放在~/.gitconfig文件中
- 系统配置
--system 存放在$(prefix)/etc/gitconfig中
- 本地配置
--local 存放在当前仓库目录下的.git/config中
-
system>global>local,低级别配置可以覆盖高级别配置
-
常见Git配置
- 用户名配置
git config --global user.name "max"
git config --global user.email max@bytedance.com
- Instead of配置
git config --global url.git@github.com:.insteadOf https://github.com/
替换url,可以将ssh协议clone换成https,反之亦然
- Git命令别名配置
git config --global alias.cin "commit --amend --no-edit"
为Git命令设置别名
- 更换Git的编辑器
git config --global core.editor vim
3. Git Remote
- 查看 Remote
git remote -v
- 添加 Remote
git remote add origin_ssh git@github.com:git/git.git
git remote add origin_http https://github.com/git/git.git
为fetch和push设置不同的远端仓库
git remote add origin git@github.com:git/git.git
git remote set-url --add --push origin git@github.com:my_repo/git.git
- SSH 免密配置
SSH可以通过生成公私钥的方式,将生成的公钥存放在服务端,实现免密访问,目前的Key有四种类型,分别是dsa、rsa、ecdsa、ed25519,默认是rsa,推荐使用ed25519,生成后公钥默认存放路径为~/ssh/id_ed25519.pub
ssh-keygen -t ed25519 -C "max@bytedance.com"
可以在GitHub如下位置将公钥的内容添加到Github上
4. Git Add
git add .
将工作区的代码提交到暂存区
.git文件夹下的objects文件夹多了一个文件夹,保存了工作区README.md的内容
文件内容会被加密,可以通过git cat-file -p查看内容
git cat-file -p 3b18e512dba79e4c8300dd08aeb37f8e728b8dad
4. Git Commit
git commit -m 'add README.md'
可以看到objects文件夹又多了几个
同样可以通过git cat-file -p查看内容
git cat-file -p 43b71c903ff52b9885bd36f3866324ef60e27b9b
git cat-file -p e2eac3a35b0cb6dd0ab64e37da8e8cd2209ff489
git log
5. Objects
以上objects文件夹里新增的三个文件夹分别是blob object、tree object、commit object,除此之外还有一个tag的object。
- Blob 存储文件的内容
- Tree 存储文件的目录信息
- Commit 存储提交信息,一个Commit可以对于一个版本的代码
Commit中存储了Tree ID,Tree中存储了Blob ID,Blob中存储了文件内容
6. Refs
Refs文件存储的是Commit ID