练习:
编写一个小项目 ,提交到git本地仓库
工作区: 开发代码 =》 git add xxx
暂存区 : 暂时存放我们开发的代码文件 =》 git commit
本地仓库:存放各个版本的历史
假设要做一个前端项目可以在github上下载html项目
1.-- 初始化项目
git init music
2.-- 添加一个index.html文件
git add index.html
git commit -m “Add index.html”
git log
3.-- 编写其他文件
git status
git add font/ icon/ image/ music/
git status
git commit -m “Add other data”
git status
git log
4.-- 添加页面样式
git status
git add script.js style.css
git status
git commit -m “Add css&js”
git status
git log
- – 修改代码文件
git status
修改了代码文件 新增文件
git status
git add -u
git status
git commit -m “Update”
git status
git log
补充:
1.git add -u
2.git log => 查看版本历史:
git log :
–reflog =》 查看所有操作的 commit 历史
1.指定输出格式
format
git log --format=oneline
git log --oneline [常用]
git log --oneline --reflog 可以连用
git log --oneline -n 2 显示最近几个commit
-n 2:
使用场景:
1.commit 特别多的时候
2.分支有关
2.分支:
一个分支一条线
默认分支:
主分支:主线 master
git branch:
branch List, create, or delete branches
git branch [–color[=] | --no-color] [–show-current]
[-v [–abbrev= | --no-abbrev]]
[–column[=] | --no-column] [–sort=]
[–merged []] [–no-merged []]
[–contains []] [–no-contains []]
[–points-at ] [–format=]
[(-r | --remotes) | (-a | --all)]
[–list] […]
git branch [–track[=(direct|inherit)] | --no-track] [-f]
[–recurse-submodules] []
git branch (–set-upstream-to= | -u ) []
git branch --unset-upstream []
git branch (-m | -M) []
git branch (-c | -C) []
git branch (-d | -D) [-r] …
git branch --edit-description []
1.创建分支
git branch -c dev =>默认从master直接复制来的
2.查看分支
git branch -v
3.切换分支
git checkout dev
git log --oneline master => 指定查看某个分支的 commit 历史
git log --oneline --gragh => 以图形化界面展示 分支的commit 历史
git log --oneline --gragh --all => 以图形化界面展示 所有分支 的commit 历史
gitk --all :
1.历史树 分支线
2.path =》 记录当前commit 变更文件
3.tree =》 记录当前commit 下文件结构
补充: 创建分支同时并切换分支
分支:git checkout
git checkout [-b|-B|–orphan] ] []
eg:
创建分支同时并切换分支
git checkout -b bigdata 61b6bb8
git branch -v
gitk --all
vim 1.log
git add 1.log
git status
git commit -m “Add 1.log”
git log --oneline --graph --all
gitk --all
从工作区 =》 本地仓库 :
git branch -c java
git checkout java
gitk --all
vim 1.log
git add -u
git commit -m “Update 1.log”
git log --oneline
vim 1.log
git status
git commit -am “Updata 1.log add 3333” !!!
注意:
git commit -am
-a 表示 工作区 暂存区 文件都有的前提下 ,更改工作区文件 可以直接提交到本地仓库
但是 新增文件 不可以
3.删除分支
git branch (-d | -D) …
-d: 删除分支之前 要求merge 到主分支
-D: 强制删除分支
git branch -d java
error: The branch ‘java’ is not fully merged.
If you are sure you want to delete it, run ‘git branch -D java’
merge–合并分支
git branch -D java
git branch -v
.git文件夹 目录介绍:
1.HEAD 文件 当前项目 正在工作的分支是谁
cat HEAD
ref: refs/heads/master
2.config :
记录项目的一些参数 一些配置信息
git config --local user.name "zihang" =》 set 设置参数
git config --local user.name =》 get操作
3.refs/
heads/ 存储的是分支的指向 哪个commit
commit hash =》 对应存储的文件内容是什么?
git cat-file
-t =》 文件类型 =》 git存储文件 有关系
-p => 文件内容
object:是git存储的真正对象 种类有 如下
commit:
tree =》
tree =》文件夹
blob =》 文件
git存储文件高效的原因:
不同的文件 只要文件内容有相同的部分 就是一个 blob