多个工作机,如何同步未 commit 的 change?

2015-01-03 04:59:26 +08:00
 yegle
两个工作站,经常在一个机器上写了一半但是还没到commit的时候,又想在另一个工作站继续工作。

想过几个方案:
1. dropbox,但是不确定dropbox是否适合,不止一次遇到过同步方向出错dropbox里文件被同步成老版本
2. 直接把半成品commit到git repo,另一个机器pull下来后git reset --soft HEAD^一下。但是这样需要手动操作同步,万一离开A机器时忘了做这么个工作就傻逼了
3. 用watchman之类的工具自动把进度导出成patch放到某个中心服务器上,这个方案还没想明白,不确定是否值得大费周张做这么个工具。
4240 次点击
所在节点    git
19 条回复
tempdban
2015-01-03 06:05:32 +08:00
其实我通常是,远程桌面连接,局域网很快的……
msg7086
2015-01-03 06:06:34 +08:00
开新branch做commit我觉得是最靠谱的。
KentY
2015-01-03 06:13:11 +08:00
开branch 然后push可能是最中规中矩的,但你非说忘了push那就没法了,要么自己写个脚本? 你两个working stations间不通么?
ligyxy
2015-01-03 06:50:41 +08:00
我现在就有这个问题, 多了很多纯粹同步用的没什么意义的commit, 标题都不知道怎么写合适
msg7086
2015-01-03 08:58:56 +08:00
@ligyxy 像stash一样,WIP: XXX,就行了呗。
而且反正是work in progress,过段时间就能清理掉了。
maikcn
2015-01-03 09:03:02 +08:00
有相同的需求,我在用的是 BTSync 来同步一台服务器和两台工作机... 偶尔会有不同步的情况,但是基本还好
standin000
2015-01-03 09:03:48 +08:00
git 开branch,删branch很容易的,不用顾忌些什么
9hills
2015-01-03 09:07:10 +08:00
开临时的分支,随意commit,不用非要凑一个好的commit。。。等到一个功能点开发完成后,merge squash 或者rebase整理下就好了。


硬是要凑一个优雅的commit,是svn带来的坏习惯
9hills
2015-01-03 09:08:07 +08:00
@ligyxy 就随便敲好了,反正最后需要rebase清理。我一般是开一个新分支,然后随意commit。。。最后整理下ok
gyteng
2015-01-03 09:10:52 +08:00
多个机器的时候只在某一台机专门commit,其他机器用dropbox同步代码
nicai000
2015-01-03 10:36:08 +08:00
一个branch专门放可以--force的未完成工作, 一台机器上commit另外一台接着开发然后rebase成一个好的commit再push到开发的branch.

另外, @9hills , 优雅的commit是好习惯, 甚至是团队合作必须的. 你可能说的是一个各方面功能完备的commit. Git最好是细碎优雅的commit和功能完备的merge.
9hills
2015-01-03 11:03:19 +08:00
@nicai000 你再仔细看下我的描述,开发中的临时commit完全没必要优雅,也不用非要凑一个commit才去提交,最后可以通过rebase整理的,才是给人看的优雅的commit.
mintist
2015-01-03 12:37:54 +08:00
开一个branch专门放这种写了一半的commit,写完再merge到master上
tywtyw2002
2015-01-03 13:34:40 +08:00
以前也有这样的问题,离开工作台计划马上回来继续。但是因为一些原因却在别的机器工作了。

一般我是dropbox同步code,commit用ssh到 主机器去commit,这样就好了。
blacktulip
2015-01-03 17:25:46 +08:00
非要用同步实现的话开 branch 比较靠谱。但是实际上 .git 文件夹本身同步起来也经常会出问题,最保险是 push 了再 pull . 就是比较麻烦。

其实我觉得应该用一份 repo . 同步早晚出问题。要么就远程,要么最简单的方式买个高速优盘...
revlis7
2015-01-04 00:52:41 +08:00
ABCD四台工作机,A用来执行测试,BCD用来开发并执行push和pull操作,在BCD上开发改动文件时,自动rsync到A机,如果忘记push,可以从A上面找到尚未push的修改,然后反向同步到当前的开发机上。

Dropbox是好,但是国内被墙了要代理好麻烦。
oxoxoxox
2015-01-04 09:44:47 +08:00
@revlis7 Dropbox只是DNS污染,不用翻墙
oxoxoxox
2015-01-04 09:52:05 +08:00
楼上很多人都说了,开branch是最好的办法,merge到master的时候是可以再整理的,而且git的branch就是用来保存临时代码的
semicircle21
2015-01-04 15:10:40 +08:00
btsync, 缺点是不开源的软件, 需要承担风险.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/158754

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX