#### apply `git diff` 生出一個 diff 檔,而 `git apply` 把這個 diff 檔 apply 到某個 branch 上。 ``` git diff ${A_COMMIT_HASH} ${B_COMMIT_HASH} > xxx.patch git apply xxx.patch ``` - 如果在 `git apply` 的過程中遇到 trailing whitespace error 的話,可以參考這篇文章:[git - My diff contains trailing whitespace - how to get rid of it? - Stack Overflow](https://stackoverflow.com/questions/14509950/my-diff-contains-trailing-whitespace-how-to-get-rid-of-it),透過加入 `--whitespace=warn` 或 `--whitespace=nowarn` 參數來解決。 - [^1] [^1]: [(2018 iThome 鐵人賽) Day 11: 使用 Git 時如何做出跨 repo 的 cherry-pick - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天](https://ithelp.ithome.com.tw/articles/10194972) ### Trouble shooting - 如果在Windows上git clone遇到,例如:`error: invalid path`、`fatal: unable to checkout working tree` ``` $ gclogi git@github.com-logi:LogiVideoFW/VC_Bolide_TableHub.git Cloning into 'VC_Bolide_TableHub'... remote: Enumerating objects: 159, done. remote: Counting objects: 100% (159/159), done. remote: Compressing objects: 100% (134/134), done. remote: Total 85001 (delta 71), reused 84 (delta 21), pack-reused 84842 Receiving objects: 100% (85001/85001), 599.21 MiB | 6.18 MiB/s, done. Resolving deltas: 100% (17824/17824), done. error: invalid path 'zynqLNX/kernel-source/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c' fatal: unable to checkout working tree warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry with 'git restore --source=HEAD :/' ``` 有可能是因為檔名與NTFS規則有所衝突,解法: ``` cd git config core.protectNTFS false; git reset --hard HEAD ```