概述
有个项目,由于最新一次发版时没有给源码打 tag,后面开发的功能直接把前面那次版本的覆盖了,现在要求只对那次发版修改一部分页面提示内容,本次使用的git工具版本是 v2.7.4。
- 针对那次历史提交打个新的 tag,使用
git tag v0.1 历史commit_id -m '打tag的备注,可有可无'
,这样就可以在本地看到一个新的 tag v0.1。 - 用
git show v0.1
可以看到这次tag的完整信息。 - 接下来就是修改这次tag 对应的内容,tag 本身只是一个标签,不能直接修改,可以
git checkout v0.1
切到这个 tag,然后新开一个分支git checkout -b branch_v0.1
,在分支上修改内容。 - 修改后测试本次修改无误后,如果需要融合到最新的代码中,就需要将这个分支融合到你最新代码所在分支。
- 修改过后,在本次分支
git add 修改文件
然后git commit -m '本次修改备注'
提交本次修改。 - 切换回你最新代码分支,如
git checkout master
,然后git merge branch_v0.1
,如果要修改的内容或文件在往后的提交中也修改过,就会发生冲突,如果没有,就不会。发生冲突时,一般需要手动先解决,再git add 修改文件
然后git commit -m '本次修改备注'
提交本次修改,最后push到git仓库就可以了。
最后,闲话。最开始我在不知道还可以针对某次历史版本打tag 时,一度想通过 git reset
和git revert
回滚到那次操作,实践中发现,执行回滚一定要先保证本地没有要commit或push的内容,保持与远程仓库一致,
git 常用命令参考: https://www.cnblogs.com/jeff-wgc/p/6401289.html
git reset --hard 历史commit_id
在本地运行后,只是把HEAD 指向了你的那次历史提交,这个又分成已经有新的commit但没有push和已经push两种情况。
首先是已经有新的commit但没有push,使用以上命令,会直接撤销指定历史commit_id之后的所有提交,代码也会还原;
其次是已经push,从那次历史commit_id提交之后的提交都被撤回了。status可以看到你的本地分支落后于仓库分支。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修改过去某次历史提交所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复