我是靠谱客的博主 斯文苗条,最近开发中收集的这篇文章主要介绍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

最后

以上就是斯文苗条为你收集整理的Git修改过去某次历史提交的全部内容,希望文章能够帮你解决Git修改过去某次历史提交所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部