Git修改过去某次历史提交

    有个项目,由于最新一次发版时没有给源码打 tag,后面开发的功能直接把前面那次版本的覆盖了,现在要求只对那次发版修改一部分页面提示内容,本次使用的git工具版本是 v2.7.4。

  1. 针对那次历史提交打个新的 tag,使用 git tag v0.1 历史commit_id -m '打tag的备注,可有可无',这样就可以在本地看到一个新的 tag v0.1。
  2. git show v0.1 可以看到这次tag的完整信息。
  3. 接下来就是修改这次tag 对应的内容,tag 本身只是一个标签,不能直接修改,可以git checkout v0.1切到这个 tag,然后新开一个分支git checkout -b branch_v0.1,在分支上修改内容。
  4. 修改后测试本次修改无误后,如果需要融合到最新的代码中,就需要将这个分支融合到你最新代码所在分支。
  5. 修改过后,在本次分支git add 修改文件 然后git commit -m '本次修改备注'提交本次修改。
  6. 切换回你最新代码分支,如git checkout master,然后git merge branch_v0.1,如果要修改的内容或文件在往后的提交中也修改过,就会发生冲突,如果没有,就不会。发生冲突时,一般需要手动先解决,再git add 修改文件 然后git commit -m '本次修改备注'提交本次修改,最后push到git仓库就可以了。

最后,闲话。最开始我在不知道还可以针对某次历史版本打tag 时,一度想通过 git resetgit revert回滚到那次操作,实践中发现,执行回滚一定要先保证本地没有要commit或push的内容,保持与远程仓库一致,

git 常用命令参考: https://www.cnblogs.com/jeff-wgc/p/6401289.html

  1. git reset --hard 历史commit_id 在本地运行后,只是把HEAD 指向了你的那次历史提交,这个又分成已经有新的commit但没有push和已经push两种情况。
      首先是已经有新的commit但没有push,使用以上命令,会直接撤销指定历史commit_id之后的所有提交,代码也会还原;
      其次是已经push,从那次历史commit_id提交之后的提交都被撤回了。status可以看到你的本地分支落后于仓库分支。
  2. git revert 历史commit_id在本地运行后,是撤销某次提交,这时候在那次历史提交的代码都会消失,并会自动产生一次新的commit ,如果不需要那些代码可以直接push 改变git 仓库上的代码。

参考文 :https://git-scm.com/docs/git-revert
         https://blog.csdn.net/ligang2585116/article/details/71094887
         https://ask.csdn.net/questions/354999
         https://blog.csdn.net/HobHunter/article/details/79462899

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值