Git 指令深入浅出【1】—— 文件管理
- 一、新建仓库
- 二、配置
- 1. 基本指令
- 2. 免密配置
- 3. 简化指令
- 三、管理文件
- 1. 常用文件管理指令
- (1)基本指令
- 工作区
- 暂存区
- 版本库
- (2)日志
- (3)查看修改
- 2. 版本回退
- (1)参数说明
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
一、新建仓库
git init
yum install tree -y
tree .git
二、配置
1. 基本指令
ls -A
cd .git
ls
cat config
git config user.name "lzxx"
git config user.email "xxx@qq.com"
git config -l
git config --unset user.emile
再次设置回来
一台服务器上是可以有多个本地仓库
git config --global user.name "lzxx"
git config --global --unset user.name
2. 免密配置
git config --global credential.helper store
# 下图配置之后首次(test3)仍然需要填写,之后(test4)即可不用
3. 简化指令
git config --global alias.st status // 给status 配别名为 st
三、管理文件
1. 常用文件管理指令
除了.git
是版本库,整个 gitcode
文件夹都属于工作区
我们不能直接修改 .git
文件,如果需要被 git 维护和管理,就需要:将工作区的内容add
至版本库。但是commit
之后才真正被 git 维护和管理。
要注意,暂存区 和 master分支 下的目录树存的都只是索引,真正的 git对象都存在 objects对象库 中。
(1)基本指令
工作区
git add file1 file2 file3
git add .
rm <fileName>
# 查看被修改的文件(已add 未commit)
git status
暂存区
# 查看【暂存区】的文件
git ls-files
# 删除【暂存区】的文件
git rm --cached <fileName>
# 同时删除 工作区 与 暂存区 的文件
git rm <fileName>
版本库
git commit -m "new or fix or ..."
git commit --amend # 修改已经提交的 commit 内容(中改英)
git rebase -i HEAD~2 # 从当前往回提交的的数量
# 把除了第一条提交的 pick 改成 squash or s
git push -f
git ls-tree -r HEAD
# -r 递归到当前子树
git rm <fileName>
git commit -m ""
(2)日志
git log
git log --pretty=oneline
git 追踪管理的其实是修改,而不是文件
# 查看提交文件内容
git cat-file -p '序列化ID'
tree
– 已 commit 的文件parent
– 上次提交的 序列化ID
(3)查看修改
# 查看被修改的文件(已add 未commit)
git status
# 查看修改的内容(工作区 <-> 暂存区)
git diff <fileName>
# 查看修改的内容(暂存区 <-> 版本库)
git diff --cached
2. 版本回退
当前数据情况如下所示:
test-diff
中的 file3 有两行数据修改file3
中的 file3 有一行数据test-file3
中的 file3 没有数据
(1)参数说明
# mixed 回退 暂存区 和 版本库 (默认)
git reset --mixed '序列化ID'
# 写法1:hard 回退 “三个库”
git reset --hard '序列化ID'
# 写法2:回退三个库
git reset --hard HEAD^
# HEAD表示当前分支的最新提交
# ^ 表示上一个版本
# ^^ 表示上两个版本
# soft 只回退“版本库”
git reset --soft '序列化ID'
需要注意的是 git log
只能查看当前的序列化ID ,如果回退之后找不到 序列化ID 可以用 git reflog
git reflog
git checkout -- <fileName>