跳到主內容

Git

merge 和 git rebase 分別

在 Git 中,git mergegit rebase 都是用來合併分支的工具,但方式不同:

  1. git merge

    • 把兩個分支的歷史合併,保留各自的提交歷史。
    • 會產生一個新的「合併提交」(merge commit)。
    • 優點:歷史清晰,能看出分支何時合併。
    • 缺點:可能使歷史變得較雜亂。
  2. git rebase

    • 把一個分支的提交移動到另一個分支的頂端。
    • 不產生合併提交,但會「重寫歷史」。
    • 優點:歷史線性,看起來更簡潔。
    • 缺點:可能導致問題(如衝突難以追蹤),不建議用在已分享的分支上。

git 復原

  1. 使用 git revert

    • git revert <commit-hash>
      這會創建一個新的提交,反轉指定提交的更改,保留提交歷史。
    • 如果需要回退多個提交,可以使用多次 git revert,或者:
      bash
      git revert <oldest-commit>..<latest-commit>
    • 解決可能的衝突,然後完成提交。
  2. 推送到遠端

    • 完成回退後,將新的提交推送到遠端:
      bash
      git push

注意

  • 不要使用 git reset 回退已公開的提交,因為這會修改歷史,對其他協作者造成影響。
  • git revert 是修改已公開提交的最安全方法,因為它保留了完整的提交記錄,且不會破壞協作者的工作流程。