merge 和 git rebase 分別
在 Git 中,git merge 和 git rebase 都是用來合併分支的工具,但方式不同:
git merge- 把兩個分支的歷史合併,保留各自的提交歷史。
- 會產生一個新的「合併提交」(merge commit)。
- 優點:歷史清晰,能看出分支何時合併。
- 缺點:可能使歷史變得較雜亂。
git rebase- 把一個分支的提交移動到另一個分支的頂端。
- 不產生合併提交,但會「重寫歷史」。
- 優點:歷史線性,看起來更簡潔。
- 缺點:可能導致問題(如衝突難以追蹤),不建議用在已分享的分支上。
git 復原
-
使用
git revert-
git revert <commit-hash>
這會創建一個新的提交,反轉指定提交的更改,保留提交歷史。 -
如果需要回退多個提交,可以使用多次
git revert,或者:git revert <oldest-commit>..<latest-commit> -
解決可能的衝突,然後完成提交。
-
-
推送到遠端
-
完成回退後,將新的提交推送到遠端:
git push
-
注意:
- 不要使用
git reset回退已公開的提交,因為這會修改歷史,對其他協作者造成影響。 git revert是修改已公開提交的最安全方法,因為它保留了完整的提交記錄,且不會破壞協作者的工作流程。