Git使用1
组成部分 :
工作区(Working Directory)
编辑文件内容时位置
暂存区(Stage)
准备提交的快照
历史记录区(History)
commit 后的记录区
三者关系 :
相互转变 :
GitFlow :
GitFlow : 指git操作流程标准
由 Vincent Driessen 提出
分支结构 :
1. master 主分支
2. develop 主开发分支,包含确定即将发布的代码
3. feature 新功能分支,一般一个新功能对应一个分支,对于功能的拆分需要比
较合理,以避免一些后面不必要的代码冲突
4. release 发布分支,发布时候用的分支,一般测试时候发现的 bug 在这个分支
进行修复
5. hotfix 分支,紧急修 bug 的时候用
工作流程:
develop
master创建
开发主干
不需要合并到其他分支
接受feature合并请求
接受release合并请求
接受hotfix合并请求
feature
develop创建
新功能开发分支,可同时多条分支
开发完成合并到develop
release
develop创建
发布分支
发布到测试环境进行测试
不停的重复发布->测试->修复->重新发布->重新测试
测试修复结束 :
合并到 develop
合并到 master
hotfix
master创建
紧急修复一些 Bug
测试->修复->测试->修复..
测试修复结束 :
合并到 develop
合并到 master
master
初始化创建
发布主干
不需要合并到其他分支
接受hotfix合并请求
接受release合并请求
上线版本分支, 版本tag
Code Review
PR (pull request)
开发者->开发->检查Review(和脚本)->编译ok->提交
MR (merge request)
管理者->检查Review->合并
fork
fork代码 -> clone,修改 -> 提交(PR ) -> 原创作者Review -> 合并(MR)
githooks
git 在执行某些特定操作时会触发的一系列程序或脚本等可执行文件
自动化管理时,自动检测语法,编译,上传到第三方等
pre-commit:
由 git commit 触发,比如触发语法,代码规范检测
commit-msg:
由 git commit 触发, 规范提交信息hook, 不符拒绝提交
update, merge, checkout等等都可以hook
.gitignore
忽略上传文件,比如pods文件
#CocoaPods
Pods/
# Xcode
#
# gitignore contributors: remember to update Global/Xcode.gitignore,
Objective-C.gitignore & Swift.gitignore
# Mac OS X Finder and whatnot
.DS_Store
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.moved-aside
*.xcuserstate
*.xccheckout
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
Podfile
Podfile.lock
Podfile.lock
.git
维护信息:
COMMIT_EDITMSG:
保存最近一次 commit message 提供给用户使用;
FETCH_HEAD:
保存本地的 FETCH_HEAD 记录,用于 git fetch 时和远程仓库的版本号做对
比;
HEAD:
这个文件包含了一个当前 branch 的引用,通过这个文件 git 可以得到下一次
commit 的parent;
config:
当前仓库的 git 配置文件;
description:
仓库的描述信息,主要给 gitweb 等 git 托管系统使用;
hooks:
这个目录存放一些 shell 脚本,可以设置特定的git命令后触发相应的脚本;
index:
这个文件就是暂存区(stage),是一个二进制文件;
info:
当前仓库的一些信息,里面有一个 exclude 文件,记录了被 .gitignore 忽略的
文件;
logs:
保存所有的更新引用记录,里面的 refs 文件夹,分文件记录了各个分支的更新引
用记录;
objects:
该目录存放所有的 git 对象,对象的 SHA1 哈希值的前 2 位是文件夹名称,后
38 位是对象文件名。
refs:
具体的引用,Reference Specification,这个目录一般包括三个子文件夹,
heads、remotes和 tags,比如,heads 中的 master 文件标识了当前仓库
master 分支指向的当前 commit,以此类推;
sourcetreeconfig:Source Tree 的配置信息。