搜尋

首頁  >  問答  >  主體

git 如何回滾

場景:

如果用git reset --hard指令回滾到A修改的版本號,那麼B的修改也被丟棄了

过去多啦不再A梦过去多啦不再A梦2811 天前749

全部回覆(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
  • 取消回覆