git 指令与版本管理
目录
git指令练习网站
一、GIT分支模式
1、常规分支模式 git-flow
解决多个不同特性之间并行开发需要的一种工作方式。当开始一个特性的开发工作的时候,从主干上拉出一个特性分支,所有的关于该特性的开发工作都发生在这个特性分支上,当完成该特性的工作之后,再把特性分支合并回代码主路径上,并准备发布。
Git-Flow 有以下几种分支:
- feature 分支:开发者进行功能开发的分支
- develop 分支:对开发的功能进行集成的分支。
- release 分支:负责版本发布的分支
- hotfix 分支:对线上缺陷进行修改工作的分支
- master:保存最新已发布版本基线的分支。

优势:
- 提供了相对完备的各种分支,以覆盖软件开发过程中的大部分场景
- 针对并行开发提供了安全的隔离
劣势:
- 分支太多,而且每类分支都有特定限定的用法,开发者很难记住什么分支是干什么的。
- 分支模式过于复杂,超出大部分团队和项目的需求。
- 如果 feature 分支的生命周期过长就会跟develop分支的差异很大,最终导致的合并冲突
- develop分支与master分支功能重叠
- hotfix 分支与 feature 分支差别不大
2、主干开发模式 TBD
所有的开发进度都提交到主干上,发布的版本单独建立分支。

优势:
- 分支少,实践简单
- 小步快跑
- 合并冲突少
- 利于持续部署和持续交付的支持
- 支持单个软件单个版本
劣势:
- 对团队的协作和集成纪律要求很高
- 对于集成验证的要求高
- 并行开发工作的隔离有难度
3、Github-Flow

4、GitLab-Flow

二、git 的几个存储区域

三、本地操作流程

四、整体操作流程

五、常用 Git 命令的作用方向

1、各区域说明
- stash(暂存区):用于临时保存工作区的修改,方便在切换分支等操作时,暂存当前未完成的工作。
- workspace(工作区):是我们实际编写代码、修改文件的地方,包含项目的所有文件。
- index(索引 / 暂存区):也叫暂存区,是工作区和本地仓库之间的中间区域,用于暂存要提交到本地仓库的文件变更。
- local repository(本地仓库):存储了项目的所有版本历史记录,记录了每次提交的快照等信息。
- remote repository(远程仓库):位于远程服务器上的仓库,用于团队协作,多人可以共享代码。
2、命令及流程解释
临时区操作
- git stash:将工作区的修改暂存到 stash 区域,可用于临时保存当前工作,以便进行其他操作(如拉取远程代码、切换分支等)。
- git stash apply:从 stash 区域取出之前暂存的修改,应用到工作区。
暂存区操作
- git rm / git mv:在工作区中删除或移动文件,这些变更会反映到后续的暂存和提交操作中。
- git add:将工作区的文件变更添加到索引(暂存区),准备提交。
- git commit:将索引(暂存区)中的变更提交到本地仓库,生成一个新的提交记录。
- git checkout:用于切换分支,或者将文件恢复到指定版本。
- git reset --hard: 不仅会回退工作区和索引(暂存区),还会移动分支指针到指定提交,且会丢弃未提交的变更。
本地仓库操作
- git commit:将索引(暂存区)中的变更提交到本地仓库,生成一个新的提交记录。
- git commit -a:跳过将文件添加到索引(暂存区)的步骤,直接将工作区中已跟踪文件的变更提交到本地仓库。
- git checkout HEAD:将工作区和索引(暂存区)回退到当前 HEAD 指向的提交状态;
- git merge:创建一个合并提交;
- git rebase: 则是将当前分支的提交重新基于目标分支的最新提交,使提交历史更线性。
这两个操作用于将一个分支的变更整合到当前分支。 - git reset --soft:将本地仓库的分支指针回退到指定提交,但保留工作区和索引(暂存区)的变更,方便重新提交。
- git reset --hard: 不仅会回退工作区和索引(暂存区),还会移动分支指针到指定提交,且会丢弃未提交的变更。
远程仓库操作
- git push:将本地仓库的提交推送到远程仓库,实现代码的共享。
- git pull: 是拉取远程仓库的代码并合并到本地分支;
- git reset --hard remote/branch: 是将本地分支强制重置为远程分支的状态,会丢弃本地未提交的变更。
这两个操作是从远程仓库到工作区或本地仓库的流程。 - git fetch:从远程仓库获取最新的提交记录到本地仓库,但不自动合并到当前分支。
然后可以通过 git merge / git rebase 将远程分支的变更合并或变基到本地分支。
浙公网安备 33010602011771号