git push时出现non-fast-forward updates were rejected的问题的解决

详情见git push --help中的NOTE ABOUT FAST-FORWARDS部分
什么是FAST-FORWARDS
假设远端分支的最新提交为A,本地分支的最新递交为B,只有本地分支上有A且B是在A的基础上修改得到的,此时push上去是一个“fast-forward update from A to B”
non-fast-forward场景及解决
1. 场景1, 多人开发,都从X开始改代码,一个人改完后push改动A,此时另一个人提交改动B就是non-fast-forward,这个提交会导致A的丢失。
从X新建一个分支tmp(如果本地master分支只进行pull操作的话,那么此时master的最新提交时X,master分支也可以),git pull,这时tmp的最新提交是A。在B所在的分支上执行git rebase tmp,解决冲突。此时B就可以变成A的子节点,此时git push就是FAST-FORWARDS,可以正常push。
2. 场景2, 单人开发(这个要确保是单人,比如使用github时我们fork的分支就一般是单人开发。不然就有可能变成场景1,强制提交会引起代码丢失),git push之后,远端最新提交为A,此时要么执行git --amend变到B,要么将A回退了修改或变到B
这时push上去不会引起 未预期的代码丢失,可以使用 git push --force来强制提交。
(注:在git --amend的场景,如果将远端提交close掉,在重新push,会导致远端的代码审核者需要重新看一遍所有的代码。这种场景下的--amend,仅仅在--amend时只改commit提示时才建议使用。否则还是新开一个commit,否则依然会导致远端代码审核者需要重复审核代码。新的commit时,远端审核这只需要看这次新的commit的修改内容就可以了)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
单片微型计算机(MCU)经过多年的发展,在性能上有很大的进步,在型号上发展到上千种类,已经广泛应用于人类社会生活的各个领域。单片机课程已经成为高校计算机、自动化、测控以及电子信息工程等专业的重要课程。该课程是一门理论性和实践性都很强的课程,在实际教学中,应将理论教学和实验教学紧密结合。学生在掌握理论知识之余,必须通过编写程序、设计硬件电路、仿真、调试这一系列的实验过程,才能更好地掌握单片机的结构原理和应用技能。随着单片机及其接口技术的飞速发展,目前市场上供应的编程仿真实验资源并不能完全满足高校单片机课程教与学的需求,构建低成本、技术先进、源码公开的单片机编程仿真实验系统,对我国单片机课程的教学和单片机领域人才的培养具有重要的现实意义。 本论文结合目前教学中对单片机编程仿真实验系统的实际需求,采用模块化结构设计思想,精心设计和开发了单片机编程仿真实验系统。该单片机编程仿真实验系统由PC机端单片机编程控制软件和单片机编程仿真实验板两部分组成。PC机端的单片机编程控制软件可以自动检测到连接到单片机编程仿真实验板上的单片机,控制单片机编程器擦除、写入、读出、校验目标单片机ROM中的程序,以十六进制文件(.HEX文件)格式显示在控制界面内;单片机仿真实验系统能够把写入单片机的程序实地运行,并呈现实际运行效果。单片机编程控制软件和单片机仿真实验板组成一个完整的单片机编程仿真实验系统。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值