V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
yegle
V2EX  ›  git

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

  •  
  •   yegle · 2015-01-03 04:59:26 +08:00 · 4394 次点击
    这是一个创建于 3598 天前的主题,其中的信息可能已经有所发展或是发生改变。
    两个工作站,经常在一个机器上写了一半但是还没到commit的时候,又想在另一个工作站继续工作。

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


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

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

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

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

    Dropbox是好,但是国内被墙了要代理好麻烦。
    oxoxoxox
        17
    oxoxoxox  
       2015-01-04 09:44:47 +08:00
    @revlis7 Dropbox只是DNS污染,不用翻墙
    oxoxoxox
        18
    oxoxoxox  
       2015-01-04 09:52:05 +08:00
    楼上很多人都说了,开branch是最好的办法,merge到master的时候是可以再整理的,而且git的branch就是用来保存临时代码的
    semicircle21
        19
    semicircle21  
       2015-01-04 15:10:40 +08:00
    btsync, 缺点是不开源的软件, 需要承担风险.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2676 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.