1.概念
- 工作区:电脑中能看到的目录
- **暂存区(索引区):一般在.git目录下的index文件中 **
- 版本库:工作区有一个隐藏目录.git,这个是版本库
2.创建仓库
-- 默认在当前目录下生成.git文件
git init
-- 在当前目录下生成newFile文件夹然后在文件夹中生成.git文件
git init newFile
3. 添加文件到暂存区
-- 添加所有文件
git add .
-- 添加单个文件
git add 文件名
-- 添加多个文件
git add 文件1 文件2
-- 取消已添加的指定文件
git reset HEAD -- 文件名
-- 将文件从暂存区删除(本地文件也会被删除)
git rm 文件名
-- 强制删除(本地文件也会被删除)
git rm -f 文件名
-- 如果需要将本地文件保留
git rm --cached
-- 重命名指定文件
git mv -f 旧文件名 新文件名
--
4.查看项目状态
-- 详细状态
git status
-- 简略状态
git status -s
PS G:\VsCode\testcli3> git status -s
A package-lock.json # 已添加的文件
A package.json # 已添加的文件
?? .browserslistrc # 以下为未添加的文件
?? .eslintrc.js
?? .gitignore
?? README.md
?? babel.config.js
?? public/
?? src/
查看执行git status的结果的详细信息
git diff --cached
5.将暂存区的文件添加到仓库中
也可以理解为设置一个快照,之后出问题可以恢复到添加时的状态
已经添加了快照的文件使用 git status 不会出现
git commit -m '自定义内容'
PS G:\VsCode\testcli3> git commit -m 'test comment from june'
[change_site 4d07ef9] test comment from june
3 files changed, 12065 insertions(+) # 这样就创建了这三个文件的快照
create mode 100644 hello.php
create mode 100644 package-lock.json
create mode 100644 package.json
PS G:\VsCode\testcli3>
# 再次输入git status会发现已经没有AA开头的文件
PS G:\VsCode\testcli3> git status -s
?? .browserslistrc
?? .eslintrc.js
?? .gitignore
?? README.md
?? babel.config.js
?? public/
?? src/
6.分支管理
-- 创建一个分支
git branch 分支名称
-- 创建分支并立即切换到刚创建的这个分支
git checkout -b 分支名称
-- 切换分支(会切换为这个分支最后提交时的状态)
git checkout 已存在分支名称
-- 列出本地分支(最左边有个 * 表示是当前使用的分支)
git branch
-- 删除分支
git branch -d 分支名称
-- 分支合并
git merge 被合并的分支名称
例:当前使用的分支为master,以下操作为将june分支合并到master中
git merge june
7.查看历史
-- 列出历史提交记录
git log
-- 简洁列出提交记录(会列出commit 中自定义的内容)
git log --oneline
-- 查看历史中什么时候出现了分支、合并
git log --oneline --graph
或
git log --graph
-- 逆向输出所有日志(可搭配 --oneline 使用)
git log --reverse
-- 查看指定用户提交的日志(可在末尾添加 -1 表示显示一行 -2 表示两行数据,之后以此类推)
git log --author=用户名
-- 查看指定时间提交的日志(可使用 --no-merges 隐藏合并提交)
-- 表示查看在2021-05-01之前的所有提交
git log --after={2021-05-01}
8.标签
当准备发布项目的一个1.0版本,提交的时候可以打上v1.0的标签
-- 创建一个带注解的标签
git tag -a v1.0
-- 然后会打开编辑器,让你输入注解内容
-- 以linux中vim的方式
-- 追加标签
git tag -a v1.0 以发布或提交的名称
-- 指定标签信息
git tag -a 标签名称 -m '自定义内容'
-- 查看标签
git log --decorate
-- 查看所有标签
git tag