首页  >  问答  >  正文

git 如何回滚

场景:

如果用git reset --hard命令回滚到A修改的版本号,那么B的修改也被丢弃了

过去多啦不再A梦过去多啦不再A梦2727 天前700

全部回复(10)我来回复

  • 巴扎黑

    巴扎黑2017-05-02 09:39:50

    雷雷

    回复
    0
  • PHPz

    PHPz2017-05-02 09:39:50

    git revert (版本号)

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-05-02 09:39:50

    这么做不会丢吧,我们都是这么做的..
    git reset --hard命令回滚到A修改的版本号
    git pull --rebase origin 分支号 拉下来B的代码看看有没有冲突,有冲突解决
    后 git push ..

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-02 09:39:50

    git reset --soft HEAD@{id},这样就是将提交撤回了,但是工作区的修改不会消失,然后将错误的修改改对了再提交并push到远端吧

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-02 09:39:50

    这种情况,我一般直接查log,把A文件还原,保证B文件完整

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-02 09:39:50

    不可以直接把错了的修改好,然后提交一次覆盖掉吗?

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-02 09:39:50

    不要在 public branch 上对已经提交的 commit 使用 git reset,如果有人已经 pull 了这些 commit,会很麻烦
    这种情况下应该用 git revert,会产生一个单独的 commit

    回复
    0
  • ringa_lee

    ringa_lee2017-05-02 09:39:50

    git rebase -i HEAD^^^
    用默认编辑器打开一个文档,修个A那次提交前面改成drop或简写为d 保存。
    会自动舍弃那次提交(如果有冲突要自己解决冲突)

    回复
    0
  • PHP中文网

    PHP中文网2017-05-02 09:39:50

    1. git log 查看 A之前 A B的commitId

    2. git reset --hard A之前的commitId

    3. git cherry-pick B的commitId

    这个功能叫检出功能,可以拿到某一次提交的修改

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-02 09:39:50

    只能revert,不能reset,凡是已经push到远程的commit都不能reset或者commit --amend,这个会破坏别人的版本历史。

    关于revert可以看看我的这篇文章:/a/11...

    回复
    0
  • 取消回复