git 操作
情境:當開發新功能,從分支main切出分支feat-test,提交了 Commit :c71017d,分支main也有了新的 Commit:773f3f6 紀錄。
第一種合併:使用 git rebase
git checkout feat-test
git rebase main
操作結果可以看到,rebase 動作將 Commit :c71017d 給轉換成 Commit: ec7262d,再加入回分支main。
第二種合併:使用 git merge
git checkout main
git merge feat-test
操作結果可以看到,merge 動作將 Commit :c71017d 改動併入了分支main,產生一個新的 Commit: 8c78f3bb。且分支feat-test的 Commit :c71017d 是留存在分支上,可以檢視完整的 commit 時序。
undo git 操作
情境:不管使用 rebase 或 merge 動作,反悔了想要重做
git reflog
git reset --hard ${commit_hash}
首先查看 git 的操作記錄,再指定要回到的 Commit,就可以達成重做的效果。