備忘待補更多來源:
2016年4月16日 星期六
如何 git merge 更改檔名的檔案
參考資料:
如果在 branch 裡有 rename file X 為 Y, 並且 master 和 branch 都有改 X ( Y ) 的內容。那麼, merge master 的時候, git 可能會回報 master 的 X 被刪除了, 造成 merge conflict (deleted in ... and modified in ...)。
解法是提高 merge.renameLimit, 比方說 git config merge.renameLimit 999999999。merge 時間會久一點, 但 git 會找出 X 在 branch 裡已被 rename 成 Y。
用 vimdiff 作 git merge
參考文章
- http://www.rosipov.com/blog/use-vimdiff-as-git-mergetool/
- http://yodalee.blogspot.tw/2013/03/vimdiffgit-merge-conflict_28.html
以前我用 kdiff3, 後來需要在 terminal merge, 改試 vimdiff, 也很好用。
設定:
$ git config --global merge.tool vimdiff
執行 (在 git merge 有 unsolved conflict 後):
$ git mergetool
UI 顯示:
- 左上: LOCAL
- 中上: BASE
- 右上: REMOTE
- 下面: 編輯區
vim 指令:
- [c, ]c: 在 hunk 間移動, 和 vim-gitgutter 一樣
- 搜 "<<<<" 找 conflict
- :diffget LOCAL: 目前的 hunk 選用 LOCAL
- :diffget REMOTE: 目前的 hunk 選用 REMOTE
- :diffupdate: 更新 diff 畫面
修改後存檔離開, 會自動 resolved conflict。無修改離開會跳過 merge, 維持原本狀態。
其它
查看 merge 狀態:
$ git status
如果整份檔案都要選用 LOCAL, 改用 git 指令:
$ git checkout --ours
全用 REMOTE:
$ git checkout --theirs
訂閱:
文章 (Atom)
在 Fedora 下裝 id-utils
Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...
-
find -uid 可以找目錄下特定使用者有的檔案, 反過來不知怎麼找。 今天靈機一動, 想到可以這麼搞, 不夠直接, 至少能用就是了: ls -lR DIR | grep "^[-rw]\{10\} " | grep -v USER 2011-01-...
-
昨天意外發現 rsync 有 -z 的參數, 可以壓縮再傳。好奇它的效果就試了一下, 結果得到出人意外的結論: 有時候直接全部重新複製還比較快........, 雖然是很明顯的事實, 用慣 rsync 後到沒想到這點。 簡易的測試環境如下: 原始檔案: 一堆目錄合起來 7G...
-
以使用 LevelDB 為例。 抓好並編好相關檔案,編譯方式見第三方函式庫附的說明: $ ls include/ # header files leveldb/ $ ls out-shared/libleveldb.so* # shared library out-sha...