備忘待補更多來源:
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-...
-
Captive Portal 是指在可以正常用網路前, 先導到一個登入網頁, 登入後才可以正常上網。通常用在需要付費上網的地方, 或是飯店提供免費但需帳號登入的 Wi-Fi。不過不限於 Wi-Fi 連線 這樣作的好處是使用者可以透過網頁看到比較詳細的說明, 像是「使用者同意書...
-
在討論 HTTPS Proxy 前, 要先分清楚是在講那件事: Proxy 和 client 之間的連線用 HTTPS Proxy 允許 client 透過它往外用 HTTPS 連線 前者的好處是保護 client 和 Proxy 之間的連線, client 若是用 ...