大家是怎样在手机和PC之间(使用git)同步GTD文件的?

android
org

#1

org来实现GTD系统确实非常高效。也许很多人都只需要在PC上使用GTD就够了,但对我而言,有时电脑并不在身边。而且我觉得随手拿到手机来记录一些GTD相关的内容还是比较方便。

那么首先一个问题就是手机上该用哪个APP?好像目前能找到的就是orgzly、mobileorg、syncorg这三个了。 我三个都试过了,最终还是决定用syncorg,只是因为它支持使用git来同步,相关的内容社区里已有了,从网上关于同步的讨论中,我发现git的方式还比较受青睐,陈斌用的就是git。

现在在使用syncorg时,我遇到了文件同步的问题,不清楚具体该是什么样的流程。我现在是这么做的:

  1. PC和Syncorg都使用一个相同的remote 分支,把这个分支托管在github、gist、coding.net等平台上
  2. PC修改org文件后,我是使用手动方式push到remote分支的。如果是手机先修改了org,就要先手动pull。
  3. Syncorg修改org后,可以自动同步,有时也可点击软件的同步按钮实现。

我并不清楚第3步中具体是如何同步的,我觉得应该也是一个push操作,但奇怪的是,好像并不会出现冲突。 而第2步中的push操作我却很容易碰到冲突,现在就遇到了这样的错误: ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@xxxxx.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 可能是因为我对git不太熟,不知道正确的处理方式该是怎样的?


#2

补充说明: 在PC使用

git push -f

可以成功推送,但是在Syncorg上一同步就又恢复到了PCpush之前的状态


#3

我git也不会,但是:mobile和PC都在版本A之后做了修改(假设mobile版本为M,PC为P),要把M push到云主机,肯定要把P(相对A的修改)拉过来合并好了(解决冲突)再push啊,不然你要推M,那P相对A的修改呢,它可能和M冲突,到底怎么处置它呢,git也不知道,要你来解决。
所以错误提示说,先git pull一下,拉取P的更新,把它和M合并好,再push就好了(因为程序员你已经手工解决冲突生成了带有P的改动的真·M,git就可以放心地让这个真·M作为P之后的版本)


#5

关于git: 在我git pull后,发现remote 分支上有的文件被删除了,我不知道怎么通过合并的方法把文件找回来,P和M都修改的是master分支,这好像不是一个分支合并的问题。

然后我又从别处把被删除的文件拷贝进目录,重新commit,再push,这并没有报什么错误。

接下在M上同步,然而删除的文件并没有出现,而且M上的同步又一次把remote分支上的文件删除了。

关于SyncOrg: 我查看了SyncOrg的wiki,它的FAQ链接到了MobileOrg的FAQ?!,里面提到 MobileOrg makes use of both checksums.dat and index.org. Without them, synchronization will not work! 我不知道是不是这个原因,根据我目前的理解,我就需要配置org-mobile-filesorg-mobile-directory(参考MobileOrg),进而在PC上使用org-mobile-pushorg-mobile-pull (这有个问题我还没有看到 emacs里有配置org mobile remote仓库的内容,按理应该要有的吧)。 但是我总觉得没有必要这么绕,直接用git应该不会这么复杂吧


#7

@xianghx @JJPandari 我重新配置了手机端的SyncOrg,现在正常了。我发现不能随便用Syncorg删除文件。

不过感觉syncorg的操作体验不如orgzly好。


#8

可以用 rebase ,这样不用新开一个 merge 的 commit


#9

尝试了 orgzly, 可以通过 ci 把文件推到 dropbox, 再从 dropbox 拉取文件到手机上. 缺点是手机端修改的文件只能同步到 dropbox, 没有办法进行版本控制.