1.修改檔案A,commit並push到遠端倉庫
2.修改檔案B,commit,也push到了遠端
3.現在A檔案的修改錯誤了,需要回滾到之前的版本,但是檔案B的修改需要保存下來,請問現在應該如何操作?
如果用git reset --hard指令回滾到A修改的版本號,那麼B的修改也被丟棄了
雷雷
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 reset
git revert
git rebase -i HEAD^^^用默认编辑器打开一个文档,修个A那次提交前面改成drop或简写为d 保存。 會自動捨棄那次提交(如果有衝突要自己解決衝突)
git rebase -i HEAD^^^
A
drop
d
git log 看 A之前 A B的commitId
git reset --hard A之前的commitId
git cherry-pick B的commitId
這個功能叫檢出功能,可以拿到某一次提交的修改
只能revert,不能reset,凡是已經push到遠端的commit都不能reset或commit --amend,這個會破壞別人的版本歷史。
關於revert可以看看我的這篇文章:/a/11...
雷雷
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
,會產生一個單獨的 commitgit rebase -i HEAD^^^
用默认编辑器打开一个文档,修个
A
那次提交前面改成drop
或简写为d
保存。會自動捨棄那次提交(如果有衝突要自己解決衝突)
git log 看 A之前 A B的commitId
git reset --hard A之前的commitId
git cherry-pick B的commitId
這個功能叫檢出功能,可以拿到某一次提交的修改
只能revert,不能reset,凡是已經push到遠端的commit都不能reset或commit --amend,這個會破壞別人的版本歷史。
關於revert可以看看我的這篇文章:/a/11...