使用PyCharm来做Git合并工具(Mac)

引子

昨天才第一次知道有mergetool这种东西,于是今天立马就上手试了试。对于Git的使用,个人偏爱敲命令行,但是命令行下遇到冲突就很尴尬。冲突少的话,直接vim很快,冲突一多就很郁闷了。所以,我觉得mergetool还是蛮有用的。本着不花钱的原则,今天尝试了几个免费的工具,如fileMerge,meld,diffMerge,怎么说呢,没有一款像当初第一次用SourceTree那样,一下就能抓住我的心(颜狗)。于是,我开始怀念之前WebStorm中的冲突解决,深得我心。再然后呢,我就想直接设置WebStorm来作为mergetool了。可是,我的教育版证书也就还有一个月就过期了(怀念大学),再次本着不想花钱的原则,选择了JetBrains家的另一个IDE,PyCharm CE,毕竟社区版,真的不花钱。然后鼓捣鼓捣就用上了,废话不讲了,上配置。

配置

  1. 下载个PyCharm CE
  2. 编辑Git的配置文件
    1
    $ vim $home/.gitconfig
  3. 把下面的配置粘进去
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [mergetool]
    keepBackup = false
    prompt = false
    [merge]
    tool = charm
    [mergetool "charm"]
    cmd = "/Applications/PyCharm\\ CE.app/Contents/MacOS/pycharm" merge $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE") $(cd $(dirname "$BASE") && pwd)/$(basename "$BASE") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")
    trustExitCode = true
    [diff]
    tool = charm
    [difftool "charm"]
    cmd = "/Applications/PyCharm\\ CE.app/Contents/MacOS/pycharm" diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")
  4. 保存退出
  5. 使用
    1
    2
    $ git mergetool
    $ git difftool

  1. 启动速度超慢有没有。。。果然颜值和效率不能兼得嘛?
  2. JetBrains官网给出的教程里说让我们Create Launcher Script,我没用这种方法,因为用这种方法要事先启动PyCharm,而且一执行$ git mergetool就会立即收到exitcode。那个启动脚本是python写的,不知道能不能通过修改那个启动脚本来让它正常。
  3. "/Applications/PyCharm\\ CE.app/Contents/MacOS/pycharm"这里的空格一定要用双反来转义。