git 如何回滾
过去多啦不再A梦
过去多啦不再A梦 2017-05-02 09:37:50
0
10
721

場景:

  • 1.修改檔案A,commit並push到遠端倉庫

  • 2.修改檔案B,commit,也push到了遠端

  • 3.現在A檔案的修改錯誤了,需要回滾到之前的版本,但是檔案B的修改需要保存下來,請問現在應該如何操作?

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

过去多啦不再A梦
过去多啦不再A梦

全部回覆(10)
巴扎黑

雷雷

PHPzhong

git revert (版本號碼)

仅有的幸福

這麼做不會丟吧,我們都是這麼做的..
git reset --hard指令回滾到A修改的版本號
git pull --rebase origin 分支號拉下來B的程式碼看看有沒有衝突,有衝突解決
後git push ..

给我你的怀抱

git reset --soft HEAD@{id},這樣就是將提交撤回了,但是工作區的修改不會消失,然後將錯誤的修改改對了再提交並push到遠端吧

我想大声告诉你

這種情況,我一般直接查log,把A檔還原,保證B檔完整

大家讲道理

不可以直接把錯了的修改好,然後提交一次覆蓋掉嗎?

伊谢尔伦

不要在 public branch 上對已經提交的 commit 使用 git reset,如果有人已经 pull 了这些 commit,会很麻烦
这种情况下应该用 git revert,會產生一個單獨的 commit

左手右手慢动作

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

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

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

  3. git cherry-pick B的commitId

這個功能叫檢出功能,可以拿到某一次提交的修改

伊谢尔伦

只能revert,不能reset,凡是已經push到遠端的commit都不能reset或commit --amend,這個會破壞別人的版本歷史。

關於revert可以看看我的這篇文章:/a/11...

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板