1 Git 四个工作区域
工作区:工作区就是我们项目的目录。
本地仓库:工作区内的 .git 目录,是Git的版本库,存储了Git仓库的所有版本信息。
暂存区:暂存区域是一个文件,保存了下次要提交的文件列表信息,一般在 Git 仓库目录中。
远程仓库:例如Github就是远程仓库。
2 Git 基本工作流程:
- 在工作目录修改文件;
- 暂存文件,将文件快照放入暂存区;
- 提交更新,找到暂存区的文件,将快照永久性存储到到 Git 仓库区(本地);
- 将本地仓库的变更推送到远程仓库
# 工作区 -> 暂存区
git add <file/dir>
# 暂存区 -> 本地仓库
git commit -m "some info"
# 本地仓库 -> 远程仓库
git push origin master # 本地master分支推送到远程origin仓库
# 工作区 <- 暂存区
git checkout -- <file> # 暂存区文件内容覆盖工作区文件内容
# 暂存区 <- 本地仓库
git reset HEAD <file> # 本地仓库文件内容覆盖暂存区文件内容
# 本地仓库 <- 远程仓库
git clone <git_url> # 克隆远程仓库
git fetch upstream master # 拉取远程代码到本地但不应用在当前分支
git pull upstream master # 拉取远程代码到本地但应用在当前分支
git pull --rebase upstream master # 如果平时使用rebase合并代码则加上
3 Git文件状态
在git中,文件主要有四种状态:
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过 git add 状态变为Staged.
Unmodify(Committed): 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用 git rm 移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过 git add可进入暂存staged状态, 使用 git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged: 暂存状态. 执行 git commit 则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行 git reset HEAD filename 取消暂存, 文件状态为Modified
4 分支
主干分支 master
主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。
开发分支 develop
主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
bug 修理分支 hotfix
主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
准生产分支(预发布分支) release
较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。
功能分支 feature
为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。