“Git:基础”的版本间差异
跳到导航
跳到搜索
无编辑摘要 |
|||
第44行: | 第44行: | ||
== 工作流程 == | == 工作流程 == | ||
[[File:git工作流程.png| | {| | ||
项目中使用Git,工作流程一般如下: | |- style="vertical-align:top;" | ||
| [[File:git工作流程.png|none|400px]] | |||
| 项目中使用Git,工作流程一般如下: | |||
# 克隆Git资源作为工作目录; | # 克隆Git资源作为工作目录; | ||
# 切换到相应开发分支; | # 切换到相应开发分支; | ||
第53行: | 第55行: | ||
# 提交修改; | # 提交修改; | ||
# 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交; | # 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交; | ||
|} | |||
== 工作分支管理模型 == | |||
{| | |||
| | |||
项目中一般分支策略如: | |||
# '''<code>master</code>''':稳定分支,长期保存; | |||
# '''<code>develop</code>''':开发分支,长期保存; | |||
# '''<code>feature</code>''':特性分支,需要时建立,完成后合并到其他分支,并删除; | |||
# '''<code>release</code>''':发布分支,送测时建立,完成后删除或保存; | |||
# '''<code>hotfix</code>''':补丁分支,修复紧急缺陷时建立,完成并合并后删除; | |||
| [[File:git分支管理模型.jpg|400px]] | |||
|} |
2020年9月21日 (一) 17:19的最新版本
.git文件夹
.git文件夹结构如下:
└── .git ├── hooks # (Folder)存放一些shell脚本,可以设置特定的git命令后触发相应的脚本 ├── info # (Folder)仓库的其他信息 │ └── exclude # 本地的排除文件规则,功能和.gitignore类似 ├── logs # (Folder)保存所有更新操作的引用记录,主要用于git reflog等 ├── modules # (Folder)项目的子模块内容(需要git submodule操作) ├── objects # (Folder)所有文件的存储对象 ├── refs # (Folder)保存分支和标签的引用 │ └── heads # (Folder)本地分支引用 │ └── remotes # (Folder)远程分支引用 │ └── tags # (Folder)标签的引用(通过git tag生成) │ └── stash # 保存的工作现场(通过git stash生成) ├── COMMIT_EDITMSG # 最新的commit message ├── config # 仓库的配置文件 ├── description # 仓库的描述信息,主要给gitweb使用 ├── FETCH_HEAD # 用于追踪远程分支的拉取与合并 ├── HEAD # 指向当前分支 ├── index # 二进制暂存区(stage) └── ORIG_HEAD # 用于件进行危险操作时备份HEAD
工作区、暂存区、版本库
- 工作区:(
workspace
)就是电脑里的工作目录。 - 暂存区:(
stage
/index
)。就是存放在.git
目录下的index
文件(即.git/index
)。 - 版本库:(
repository
)就是工作区的隐藏目录.git
。
其中:
- HEAD:当前活跃分支的游标;
- objects:Git的对象库,位于 ".git/objects" 目录下,包含了创建的各种对象及内容;
- 执行
git add
命令(对工作区修改(或新增)的文件):暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中; - 执行
git commit
提交操作:暂存区的目录树写到版本库中,当前分支会做相应的更新。即HEAD
指向的目录树就是提交时暂存区的目录树; - 执行
git reset HEAD
命令:暂存区的目录树会被重写,被HEAD
指向的目录树所替换,但是工作区不受影响; - 执行
git rm --cached <file>
命令:会直接从暂存区删除文件,工作区则不做出改变; - 执行
git checkout .
(或git checkout -- <file>
)命令:会用暂存区全部或指定的文件替换工作区的文件(会清除工作区中未添加到暂存区的改动); - 执行
git checkout HEAD .
(或git checkout HEAD <file>
)命令:会用HEAD
指向的当前分支中的全部或者部分文件替换暂存区和以及工作区中的文件(不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动)。
工作流程
项目中使用Git,工作流程一般如下:
|
工作分支管理模型
项目中一般分支策略如:
|
![]() |