Git - 单节点使用
在 Hello_GIT 中,我们介绍了如何配置 GIT。接下来我们将针对单机项目使用进行
创建一个项目
选中项目根目录后,初始化仓库
git init
# Git 2.35.2 版本以后,出现 ‘安全存储库’ 的概念,这个是添加到信任仓储命令git config --global --add safe.directory 仓储位置
这是创建后的 Git 仓储。值得注意的是,Git 的主分支(Branch)默认"master" 而 非"main"
本地仓库操作
在进行本地前,你需要明白Git 的本地工作模式,大致如下:
#mermaid-svg-UqOAYYBAvxUBGgI8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .error-icon{fill:#552222;}#mermaid-svg-UqOAYYBAvxUBGgI8 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UqOAYYBAvxUBGgI8 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .marker.cross{stroke:#333333;}#mermaid-svg-UqOAYYBAvxUBGgI8 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UqOAYYBAvxUBGgI8 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .cluster-label text{fill:#333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .cluster-label span{color:#333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .label text,#mermaid-svg-UqOAYYBAvxUBGgI8 span{fill:#333;color:#333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .node rect,#mermaid-svg-UqOAYYBAvxUBGgI8 .node circle,#mermaid-svg-UqOAYYBAvxUBGgI8 .node ellipse,#mermaid-svg-UqOAYYBAvxUBGgI8 .node polygon,#mermaid-svg-UqOAYYBAvxUBGgI8 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-UqOAYYBAvxUBGgI8 .node .label{text-align:center;}#mermaid-svg-UqOAYYBAvxUBGgI8 .node.clickable{cursor:pointer;}#mermaid-svg-UqOAYYBAvxUBGgI8 .arrowheadPath{fill:#333333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-UqOAYYBAvxUBGgI8 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-UqOAYYBAvxUBGgI8 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-UqOAYYBAvxUBGgI8 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-UqOAYYBAvxUBGgI8 .cluster text{fill:#333;}#mermaid-svg-UqOAYYBAvxUBGgI8 .cluster span{color:#333;}#mermaid-svg-UqOAYYBAvxUBGgI8 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-UqOAYYBAvxUBGgI8 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
git add
git commit
git checkout
**工作区**
缓存区
仓储
创建一个文件
touch readme.md
echo"hello this is a readme file!">> ./readme.md
查看当前状态
# 此快捷键我们已经在 用户配置 中设定了git st
# 未设定使用此命令git status
此时会显示以下三个信息
- on brench : 告知你当前的分支位置
- Untracked files : 未追踪的文件
- No commits yet : 无提交记录
工作区与缓存区
什么是工作区?
如果只有Git的话,工作区默认是当前目录。如果与你的 IDE 集成了,就是 IDE 打开的目录。
什么是缓存区?
缓存区(Staging Area)是位于 .git/index 当中,当我们 编辑好文件 后,就可以使用
git add 文件名
提交它了!提交后任何在工作区的更改都会被告知!
缓存区文件可以通过
git diff
比较修改差异,
git restore 文件名
撤销工作区更改。
工作区/缓冲区命令
无论是工作区还是缓存区,都有一个重要的参数选项
--cached
这代表文件的操作!同时我们建议你先学习 Linux 后再学习 Git! 避免出现各种各样的问题。
提交文件
# 提交 readme文件 到缓存区gitadd readme.md
# 提交本目录下全部文件到 缓存区gitadd.
撤销工作区更改
# 撤销指定文件更改git restore readme.md
# 撤销全部更改git restore *
取消提交
# 取消 readme.md 文件的缓存# 注意,文件在工作区必须未修改!gitrm --cached readme.md
# 取消全部gitrm -r --cached *
查看修改的不同
> 如果确定了工作区的修改,再次提交工作区文件即可!
# 查看单个文件gitdiff readme.md
# 查看全部更改gitdiff *
清空缓存区
# 清空缓存,保留工作区更改git reset
清除未在缓存区的文件
git clean -f
缓存区与仓储
什么是仓储?
仓储(Reposeitory)是利用 SHA-1 进行存储提交的完整历史记录和版本记录。主要有本地仓储和远程仓储两种,本篇介绍的是本地仓储。
S
H
A
1
=
h
a
s
h
(
树对象
+
父提交
+
提交信息
)
SHA1 = hash(树对象 + 父提交 + 提交信息)
SHA1=hash(树对象+父提交+提交信息)
缓存区/仓储命令
提交缓存区命令
# 将进入了缓存区的文件全部提交git commit -m "第一次提交"
查看提交记录
git log
查看提交详细
# 按 q 退出查看git show [记录的SHA-1数值]
版本回退
# 同时还原缓存区修改git reset [回退到的SHA-1数值]
对比历史差异
gitdiff[对比的SHA-1数值]
仓储/工作区命令
查看不同的提交历史
# 此方式相当于查看新分支,我们将在下章讲解git checkout [SHA-1值]
返回当前分支
# 注意你自己的主要分支是什么!git check master
查看 HEAD 信息
# 注意,reflog在远程仓储中是不应当存在的!git reflog
版权归原作者 仲芒 所有, 如有侵权,请联系我们删除。