git的使用总结

本文总结了git的常规迭代步骤,包括创建、切换分支,提交与合并。详细阐述了checkout命令的使用,如切换分支、撤销修改。接着讨论了revert与reset的区别,它们都是用于恢复改动,但reset会删除历史记录,而revert则创建新提交来抵消原有改动。最后,解释了PR(Pull Request)和MR(Merge Request)在不同平台的差异,用于代码合并。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、正常的迭代步骤

在正常项目的迭代开发过程中 如何安装git以及如何配置已省略

  1. 在开始开发前,须开启一个新分支,对于项目的迭代或bug修复都需要在一个单独的分支中进行开发,即 git branch <new_branch> [main_branch]
  • <new_branch>:具体的新创建的分支;
  • [main_branch]:新开发分支的源分支,若当前分支即为该分支,可省略
  1. git checkout newBranch切换至newBranch
  2. 在进行了一系列的Coding后,完成了一个新功能或者修复了一个bug后,需要将改动的代码提交至git管理,可用以下命令进行提交
  • git add .:将项目里的未追踪文件,改动文件添加进 stage ,所以在此之前,请确认已删除开发过程中可能添加的一些用于测试的文件
  • git commit -m “commit message”:提交本次修改,并添加具体的提交描述,例如git commit -m “feat:添加了XX功能”
    描述规范如下:
    • feat: 增加新功能
    • fix:问题修复
    • docs:文档变更
    • style:代码风格变更(不影响功能)
    • refactor:既不是新功能也不是问题修复的代码变更
    • perf:改善性能
    • test:增加测试
    • chore:开发工具

也可参考以下图片:在这里插入图片描述

  1. 若在开发过程中需要切换到其他的分支,在切换分支前,可通过git status查看确认工作区是否干净
  2. 在push到远程时,可通过
  • git pull origin <main_branch>:拉取团队其他成员的代码
  • 解决代码冲突
  • git push origin <your_branch>:<origin_branch>将 <your_branch>换为你要提交的分支名称,将 <origin_branch> 替换为你要推送到的远程分支名称,若两个分支名称相同,且你当前所在的分支就是要推送的分支,那么可以省去 :<origin_branch> 缩写为 git push origin <your_branch>
  1. 分支合并,在本地可通过git merge进行合并,在远程通过发起Merge Request进行合并
二、checkout 命令的使用
  1. 用来切换分支
  • git checkout other_branch:切换到other_branch(当工作区无内容时,可直接切换至otherBranch)
  • git checkout -f other_branch:强制切换至other_branch(若工作区有内容时,会丢失工作区的改动,并切换至otherBranch)
  • git checkout:汇总显示工作区,暂存区与HEAD的差异
    例下图,汇总显示改动
    在这里插入图sss片描述从Fet20210323_privacy_ml切换至master,工作区的改动丢失
    在这里插入图片描述
  1. 文件修改
  • git checkout --filename:用暂存区中的filename文件覆盖工作区中的filename文件
  • git checkout .:取消所有本地的修改(相对于暂存区)相当于用暂存区的内容去覆盖本地文件,且不会给你确认的机会。
    例如
    在这里插入图片描述

在这里插入图片描述
3. 切换到指定的快照(commit)

  • git checkout [commit]:git checkout 切换到指定的commit,执行此命令,会改变HEAD的指向
  • HEAD:This exact state - when a specific commit is checked out instead of a branch is what’s called a ‘detached HEAD’(HEAD是一个指针,通常会指向当前所在分支,而分支又指向一个 commit 提交。当HEAD指向某一个commit,便会形成detached HEAD(“游离状HEAD”))
    具体例子如下图所示
    在这里插入图片描述
三、revert与reset的使用

都是为了还原当前的改动
1.git reset:重置:快速的回退到某个版本

  • git reset --hard xxx:修改版本库,修改暂存区,修改工作区
    在这里插入图片描述执行git reset --hard 6df395f19
    在这里插入图片描述

  • git reset --soft xxx:修改版本库,保留暂存区,保留工作区在这里插入图片描述
    执行 git reset --soft 6df395f19
    在这里插入图片描述

  • git reset --mixed xxx只保留工作区的内容
    2.git revert
    revert:还原,使还原某条记录
    例如下图:
    在这里插入图片描述
    在命令行执行git revert 38420d96a
    在这里插入图片描述
    对revert的commit进行revert,即执行git revert
    在这里插入图片描述
    又还原了最初的修改
    3.git revert 与git reset的对比

  • git的版本记录(提交记录):reset是删掉该记录,HEAD向后退,revert是新增一条commit记录去覆盖本次需要回退的改动(新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容),HEAD是向前移动的,且会指向最新提交

  • git reset会清除掉提交记录,git revert会保留每一条记录,更容易进行管理和追踪

  • revert hash:该hash为对应想删除的commit提交,但reset hash中的hash值是删除的commit的前一个提交,例如:
    在这里插入图片描述

  • 对于merge来说,reset本次合并后,后续仍然可以继续合并,但revert到前一种状态,后续再次merge,合并分支无法再将该分支(revert前的提交)合并进来,会永远抛弃掉之前的提交,解决方法如下:

    • 强制物理覆盖,重新提交一次
    • 对于其他的非protect分支, 在本地将该分支执行git reset --hard --HEAD^,之后再push到远程,重新合并
    • 对revert的那次提交记录再次进行revert,即反revert,回到原位。
四、PR与MR

1.PR:Pull Request:拉取请求
一般在gitHub中使用,可站在原作者的角度进行合并代码
2.MR: Merge Request:合并请求
一般在gitLab中使用,站在开发者的角度,将自己的特性分支合入到主干分支
官方定义:

Merge or pull requests are created in a git management application and ask an assigned person to merge two branches. Tools such as GitHub and Bitbucket choose the name pull request since the first manual action would be to pull the feature branch. Tools such as GitLab and Gitorious choose the name merge request since that is the final action that is requested of the assignee. In this article we’ll refer to them as merge requests.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值