Jason-Yuan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

git 指令与版本管理


git指令练习网站

一、GIT分支模式

1、常规分支模式 git-flow

   解决多个不同特性之间并行开发需要的一种工作方式。当开始一个特性的开发工作的时候,从主干上拉出一个特性分支,所有的关于该特性的开发工作都发生在这个特性分支上,当完成该特性的工作之后,再把特性分支合并回代码主路径上,并准备发布。

   Git-Flow 有以下几种分支:

  • feature 分支:开发者进行功能开发的分支
  • develop 分支:对开发的功能进行集成的分支。
  • release 分支:负责版本发布的分支
  • hotfix 分支:对线上缺陷进行修改工作的分支
  • master:保存最新已发布版本基线的分支。

alt text

优势:

  • 提供了相对完备的各种分支,以覆盖软件开发过程中的大部分场景
  • 针对并行开发提供了安全的隔离

劣势:

  • 分支太多,而且每类分支都有特定限定的用法,开发者很难记住什么分支是干什么的。
  • 分支模式过于复杂,超出大部分团队和项目的需求。
  • 如果 feature 分支的生命周期过长就会跟develop分支的差异很大,最终导致的合并冲突
  • develop分支与master分支功能重叠
  • hotfix 分支与 feature 分支差别不大

2、主干开发模式 TBD

   所有的开发进度都提交到主干上,发布的版本单独建立分支。
alt text

优势:

  1. 分支少,实践简单
  2. 小步快跑
  3. 合并冲突少
  4. 利于持续部署和持续交付的支持
  5. 支持单个软件单个版本

劣势:

  1. 对团队的协作和集成纪律要求很高
  2. 对于集成验证的要求高
  3. 并行开发工作的隔离有难度

3、Github-Flow

alt text

4、GitLab-Flow

alt text

二、git 的几个存储区域

alt text

三、本地操作流程

alt text

四、整体操作流程

alt text

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

alt text

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 将远程分支的变更合并或变基到本地分支。
posted on 2025-08-20 20:55  12yuan  阅读(8)  评论(0)    收藏  举报