场景:
1.修改文件A,commit并push到远程仓库
2.修改文件B,commit,也push到了远程
3.现在A文件的修改错误了,需要回滚到之前的版本,但是文件B的修改需要保存下来,请问现在应该如何操作?
如果用git reset --hard命令回滚到A修改的版本号,那么B的修改也被丢弃了
1.修改文件A,commit并push到远程仓库
2.修改文件B,commit,也push到了远程
3.现在A文件的修改错误了,需要回滚到之前的版本,但是文件B的修改需要保存下来,请问现在应该如何操作?
如果用git reset --hard命令回滚到A修改的版本号,那么B的修改也被丢弃了
这么做不会丢吧,我们都是这么做的..
git reset --hard命令回滚到A修改的版本号
git pull --rebase origin 分支号 拉下来B的代码看看有没有冲突,有冲突解决
后 git push ..
不要在 public branch 上对已经提交的 commit 使用 git reset
,如果有人已经 pull 了这些 commit,会很麻烦
这种情况下应该用 git revert
,会产生一个单独的 commit
git log 查看 A之前 A B的commitId
git reset --hard A之前的commitId
git cherry-pick B的commitId
这个功能叫检出功能,可以拿到某一次提交的修改
只能revert,不能reset,凡是已经push到远程的commit都不能reset或者commit --amend,这个会破坏别人的版本历史。
关于revert可以看看我的这篇文章:https://segmentfault.com/a/11...
5 回答2.8k 阅读
3 回答2.6k 阅读
3 回答963 阅读