---
# System prepended metadata

title: +_合併後 revert
tags: [git]

---

# 合併後 revert

## Revert 後，想重新合併已合併過的檔案
在 Git 中，系統會檢查是否有合併記錄，而不是僅僅比較檔案內容。
如果在 revert 前已經合併過某個分支，Git 會認為==這些變更已經合併過==(好聰明😢)，因此在你嘗試重新合併時，系統會顯示沒有東西可以比較。

## 解法
### 1. [--soft](https://github.com/nss-evening-cohort-13/student-help/issues/76)
使用 git reset --soft main 命令可以將當前分支（在你的情況下是 develop）重置為 main 分支的狀態，同時保留你的變更。這將使 develop 分支的 HEAD 指向 main 分支的最新提交，但保留所有變更在暫存區中。
執行前需要確認你的 HEAD 在哪裡比較保險。

### 2. [cherry-pick](https://gitbook.tw/chapters/faq/cherry-pick#google_vignette)
git cherry-pick 可以將==指定的提交歷史記錄== 複製到 當前分支並創建新的 commit。
這在你需要重新應用某個已合併但後來被撤銷的提交時特別有用。

例如，如果你遇到 button-5 無法合併到 develop 的情況，可以創建一個新的分支（例如 button-5-fix），並在該分支上使用 git cherry-pick 命令來應用特定的提交。

假設你要 cherry-pick 的提交 hash 值為 happy，你可以這樣操作：
```bash!
git checkout -b button-5-fix
git cherry-pick happy

這將把 happy 這個 hash 值對應的提交歷史複製到 button-5-fix 分支並創建新的 commit。
```

這樣，就可以把新的 button-5-fix 分支合併到 develop 分支，保證原本 button-5 的變更被應用。