V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
huoguo32
V2EX  ›  程序员

请问怎么实现两台电脑之间同步代码

  •  
  •   huoguo32 · 2022-06-10 20:44:05 +08:00 via Android · 12276 次点击
    这是一个创建于 931 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家里一台,公司一台。有时候下了班回家了还想用家里的电脑继续写代码。用 git 的话问题在于,我不能写一半就提交,必须完成一个功能点再提交一次。而且 git 都是从公司公共的仓库拉的,总不能写个半截提交到公司的 git 上让领导看见吧
    121 条回复    2022-06-16 23:03:42 +08:00
    1  2  
    heliushao88
        1
    heliushao88  
       2022-06-10 20:46:24 +08:00 via Android   ❤️ 2
    我也想知道
    noe132
        2
    noe132  
       2022-06-10 20:49:17 +08:00   ❤️ 28
    为啥不能提交一半的?自己新建个分支不就完了?最后写完 rebase 一下就合并到一起了,merge 完再把这个分支删掉就好了
    nightwitch
        3
    nightwitch  
       2022-06-10 20:49:43 +08:00 via Android   ❤️ 1
    新建一个仓库,不和公司的重复。下班的时候新建一个分支 push 到这个仓库上
    darksword21
        4
    darksword21  
       2022-06-10 20:51:18 +08:00 via iPhone
    Syncthing
    renmu123
        5
    renmu123  
       2022-06-10 20:56:38 +08:00 via Android
    WIP
    ilylx2008
        6
    ilylx2008  
       2022-06-10 20:57:32 +08:00   ❤️ 1
    公司电脑 24 小时开机,从家里连到公司电脑上开发。
    yfugibr
        7
    yfugibr  
       2022-06-10 20:57:47 +08:00   ❤️ 1
    还是建议用 git ,新建仓库或者分支都可以,别的软件出问题的话可能你一天就白干了
    huoguo32
        8
    huoguo32  
    OP
       2022-06-10 21:01:07 +08:00 via Android
    @nightwitch 请问新建仓库是在原有的文件夹下新建吗?不会和原来的仓库冲突吗,我一直理解的是一个文件夹只能有一个 git 仓库
    lxzxl
        9
    lxzxl  
       2022-06-10 21:12:44 +08:00 via iPhone   ❤️ 1
    remote 可以设置多个 不只默认的 origin
    i3x
        10
    i3x  
       2022-06-10 21:12:58 +08:00 via Android   ❤️ 13
    没人看重点吗?关键是下班了还继续写。。。。这么负责任的员工就没有资格额外开一个分支?或者独享一个私有的库?
    看楼主的描述应该是 CTO 或者大股东。建议开个私有库。自己写自己的。写满意了再合并。


    另外用 git 的公司也要注意自己的劳动成果。记得备份。。小心别人瞎搞,把你写了一天的代码搞没了
    Code2Morning
        11
    Code2Morning  
       2022-06-10 21:16:40 +08:00
    如果有代码审核流程的话,完全可以 push 上去之后,pr 先不 merge ,回家把代码拉回来,取消这个 pr ,本地代码写完后再次提交另一个 pr
    clf
        12
    clf  
       2022-06-10 21:20:46 +08:00
    Syncthings+Zerotier 需要一台电脑一直在线同步。

    还可以通过手机作为中介,两台电脑都装 Syncthings+Android 手机安装 Syncthings ,在公司的时候,手机和公司电脑间实时同步,在家里的时候手机和电脑实时同步。
    Code2Morning
        13
    Code2Morning  
       2022-06-10 21:21:18 +08:00
    @Code2Morning 说白了就是利用代码审核机制来搞事情,但是会有 pr 的记录,所以也不要滥用...
    clrss
        14
    clrss  
       2022-06-10 21:45:09 +08:00
    我用的 rsync
    charlie21
        15
    charlie21  
       2022-06-10 21:55:03 +08:00
    U 盘偷偷拷贝走
    guisheng
        16
    guisheng  
       2022-06-10 22:43:21 +08:00 via iPhone
    云盘。iCloud 或者 dropbox 。下班前执行一下自动化 把代码 copy 一份进去。家里的一样 每天上班第一件事就是把文件拉出来。至于你本地的那份过期的可以保留也可以删除
    doommm
        17
    doommm  
       2022-06-10 23:02:33 +08:00
    难道不是 fork 一个自己的仓库,提交到自己仓库的分支,写完之后往主仓库提 pr 吗
    Jooooooooo
        18
    Jooooooooo  
       2022-06-10 23:16:10 +08:00   ❤️ 2
    为啥不能写一半就提交? 没有自己开发分支的概念吗?

    感觉白用 git 了呀.
    codeMore
        19
    codeMore  
       2022-06-10 23:52:24 +08:00
    难道不是在自己的功能特性分支上开发嘛?而且还有,不是建议多提交嘛?防止本地出问题丢失代码
    rpish
        20
    rpish  
       2022-06-11 00:35:11 +08:00   ❤️ 2
    @huoguo32 感觉 op 可能不大会用 git
    3 楼的意思是创建一个(私有的)远端仓库,然后用 2 楼的办法,在自己的开发分支上,创建个子分支,打 commit 记录下,push 到远端.
    回家 pull 下来继续开发,一样重复上面过程.
    之后在公司的电脑上 pull 自己的远端仓库内容以后,用 3 楼的办法合并,push 到公司仓库,或者发 pr 就好了.
    wangkun025
        21
    wangkun025  
       2022-06-11 00:39:55 +08:00
    只要是两个操作系统,就没什么好办法。两台电脑,如果同一个操作系统(同一个实例)才可以。
    GeruzoniAnsasu
        22
    GeruzoniAnsasu  
       2022-06-11 01:39:49 +08:00
    同事就把项目放 dropbox 的同步文件夹里。


    不过他是搞研究的,项目不会很大而且二进制文件居多。


    我一般在 git 中配置两个 remote ,往自己的机子上推半成品代码。只要能 ssh 登录就能在这台机子上创建 remote repository ,不需要中间 host 的。
    darklights
        23
    darklights  
       2022-06-11 01:59:40 +08:00
    将远程仓库是可以放到 U 盘上,如有需要固定盘符或者映射 NTFS 路径(我没试过),下班时提交到这个仓库上。如果熟悉 GIT 命令行,可以写个脚本用当前时间作为名称创建分支、提交记录,一个命令瞬间完成(我不熟)。
    参考: https://stackoverflow.com/a/39471686
    jamme
        24
    jamme  
       2022-06-11 02:01:20 +08:00   ❤️ 1
    @huoguo32 #8 额,建议你再去学习一下 git
    jsq2627
        25
    jsq2627  
       2022-06-11 02:15:50 +08:00 via iPhone   ❤️ 1
    vscode 远程开发 remote ssh ?
    lightjiao
        26
    lightjiao  
       2022-06-11 02:43:37 +08:00
    @noe132 #2
    @renmu123 #5
    @yfugibr #7
    @jamme #24
    Git 我倒是用得很熟,有一些玩票性质的开源项目,有时候会在公司写一小部分,在家也会写
    但经常会出现写了一半就留在本机,没有提交 WIP 的情况,蛮蛋疼的
    后来我就在公司不写开源项目
    Mac
        27
    Mac  
       2022-06-11 05:07:41 +08:00 via Android
    我是扔坚果云,虽然坚果云一直提示不建议用坚果云同步代码,但我付费我乐意🙃
    ryd994
        28
    ryd994  
       2022-06-11 05:37:32 +08:00 via Android   ❤️ 1
    为什么直接往 master commit ?每开发一个功能就应该开一个 topic branch 。topic branch 里随便你怎么搞。搞完最后提交一个 PR ,squash merge 到 master 。保证最后 PR 看起来是干净的就行。

    或者你可以在自己的 branch 上随便 commit 。最后 rebase+squash 一下,留下一个大 commit 再 cherrypick 到 master 。
    RiceNoodle
        29
    RiceNoodle  
       2022-06-11 05:59:15 +08:00
    弄一个自己的特性开发分支,即使 push 到远端也没关系吧 ,你又不合入。
    sutra
        30
    sutra  
       2022-06-11 06:31:26 +08:00   ❤️ 1
    谁说 git 写完一半不能提交的,你搞一个特性分支,写完再 merge --squash 过去。
    hello2090
        31
    hello2090  
       2022-06-11 06:36:16 +08:00 via iPhone   ❤️ 1
    同感楼主不会用 git,你开发的是在自己的开发 branch 上,又不是 master branch, push 上去有记录又如何,反正 merge 的时候就一条。

    不想把自己的开发 branch 搞乱就在上面再开一个 branch, 回家在那上面做,做好了 merge 到开发 branch 上

    最后如果实在不想通过 git 搞,我在家两台电脑局域网 syncthings 同步很好。网盘的问题是不能 exclude 某些文件夹,build ,node modules 目录同步起来很费时。但你是公司家里同步这其实也不是问题,等你到家了一般也就同步好了。
    Canon1014
        32
    Canon1014  
       2022-06-11 07:29:29 +08:00
    IDEA 的那个 code with me 算不算
    dashupc
        33
    dashupc  
       2022-06-11 07:46:22 +08:00 via Android
    群晖 文件夹同步
    ericgui
        34
    ericgui  
       2022-06-11 07:51:10 +08:00
    你有空闲,为何要不给自己写代码

    写个小项目
    或者做个什么别的项目
    学点新东西也好啊
    ericgui
        35
    ericgui  
       2022-06-11 08:05:52 +08:00
    而且你没有 VPN ,你在家咋写代码
    ichubei
        36
    ichubei  
       2022-06-11 08:16:08 +08:00 via iPhone
    住在公司比较好。
    JDog
        37
    JDog  
       2022-06-11 08:56:33 +08:00
    iCloud
    ClericPy
        38
    ClericPy  
       2022-06-11 09:07:26 +08:00   ❤️ 2
    没有 WIP 分支用 git 还有啥用, 估计是 SVN 养成的习惯然后追时髦开始 git 的吧

    丢坚果云里吧, 反正我之前没见过代码可以随便丢到公有云上的, 这种公司就跟着大部队走, 工作生活平衡分明白, 下班别写了, 领导看不见的工作量都是多余
    seanzxx
        39
    seanzxx  
       2022-06-11 09:10:17 +08:00
    难道不是应该自己建一个 feature branch 吗?在里面随便搞,最后为了美观 rebase 一下
    写一半提交毫无问题,反正之后都会被 rebase 掉
    Dlin
        40
    Dlin  
       2022-06-11 09:10:35 +08:00
    @huoguo32 可以有多个远程仓库
    xiayushengfan
        41
    xiayushengfan  
       2022-06-11 09:27:07 +08:00
    远程链接公司电脑 ??
    debuggeeker
        42
    debuggeeker  
       2022-06-11 09:33:42 +08:00
    自己用个小服务器部署一个 svn ,随便玩
    ma836323493
        43
    ma836323493  
       2022-06-11 10:16:01 +08:00   ❤️ 7
    楼主偷偷加班不想让老板知道, 自己的分支都不敢创建
    Jiajin
        44
    Jiajin  
       2022-06-11 10:24:17 +08:00
    @ma836323493 哈哈,你的评论把我看笑了
    thtznet
        45
    thtznet  
       2022-06-11 10:29:10 +08:00
    分两种,功能完成的代码同步:Git ,功能没完成写了一半的代码同步:Syncthing
    beisilu
        46
    beisilu  
       2022-06-11 10:32:56 +08:00
    你回家写工作代码不给领导看装逼,难道是做慈善吗
    laxenade
        47
    laxenade  
       2022-06-11 10:33:46 +08:00 via Android
    repo 一大 syncthings 就很慢了,推荐 unison 。
    jiangzhizhou
        48
    jiangzhizhou  
       2022-06-11 10:43:13 +08:00
    看完觉得 Git 确实还有使用差距,至少生产环境用三个月就应该比较熟悉了。都有一个熟悉的过程
    g1f9
        49
    g1f9  
       2022-06-11 10:44:53 +08:00
    vscode 远程机开发
    ByteCat
        50
    ByteCat  
       2022-06-11 10:48:49 +08:00
    解决办法是连到公司的机子上继续开发,我目前用的是 Moonlight
    caisanli
        51
    caisanli  
       2022-06-11 11:01:28 +08:00
    我用 GitHub Desktop ,可以把本地的 git 区分开,自己的代码在 GitHub Desktop 提交,公司的代码就用本地的 git 提交。
    caisanli
        52
    caisanli  
       2022-06-11 11:02:37 +08:00
    @caisanli 审题不清 当我没说哈哈哈
    gdm
        53
    gdm  
       2022-06-11 11:04:24 +08:00
    怎么会有人懂得用 git 却不懂用同步网盘,真是太不可思议了……
    wisetc
        54
    wisetc  
       2022-06-11 11:55:34 +08:00 via iPhone
    有 VPN 吗,有 VPN 好解决,直接 vnc 连上去,或者在终端中开发或利用 vscode remote 的功能,并用 ssh 转发服务端口。没有 VPN 的话,有服务器吗,有服务器的话也很好解决,利用服务器中转一下然后结合端口转发就能进入公司的文件系统,就能修改代码并预览结果了。反正总得能获得工作区的代码才能接着这个代码
    neptuno
        55
    neptuno  
       2022-06-11 12:04:28 +08:00 via iPhone
    自己开个分支不就好啦
    MakHoCheung
        56
    MakHoCheung  
       2022-06-11 12:14:57 +08:00
    首先针对你的需求,用 iCloud 这类网盘,非常方便,嘿嘿嘿
    然后你不用 git 是怕分支被领导看到?一般情况开新分支并且 push 到仓库仓库 maintainer 是不知道的,所以最优方法是新开分支
    ColdBird
        57
    ColdBird  
       2022-06-11 12:19:39 +08:00
    新建一个 wip 分支不就得了
    FaiChou
        58
    FaiChou  
       2022-06-11 13:07:51 +08:00   ❤️ 1
    $ git diff > wip.patch # 保存下来 发给家里电脑
    $ git apply wip.patch # 在家里项目上用 patch 来更新变动
    anshigm
        59
    anshigm  
       2022-06-11 13:16:31 +08:00
    用 onedrive 或者 dropbox 云盘就可以了啊
    BugCry
        60
    BugCry  
       2022-06-11 13:28:38 +08:00 via Android
    @jsq2627 远程开发+1
    thinkershare
        61
    thinkershare  
       2022-06-11 13:46:39 +08:00
    @anshigm OneDrive 同步代码是不靠谱的, 特别是有 npm 这种辣鸡, 会出现各种诡异的现象, 而且官方也不建议同步代码, 坚果云也是一样, 我为这个事情还专门发邮件咨询过
    TerranceL
        62
    TerranceL  
       2022-06-11 13:48:10 +08:00
    远程桌面。。
    cloverzrg2
        63
    cloverzrg2  
       2022-06-11 13:48:26 +08:00
    你们领导这么闲,还会盯你的提交。我这只扫一下 PR
    GalaxyVIP
        64
    GalaxyVIP  
       2022-06-11 13:53:42 +08:00
    这种开发中的代码,自己开个分支就好了呀,写完了再 pick 到主分支去再提交呗。自己开发的话,我都是无限 amend 然后 push -f 强制提交的,回家直接拉下来就好了,开发完了再强制 push 。
    GalaxyVIP
        65
    GalaxyVIP  
       2022-06-11 13:55:30 +08:00
    以前在某手机厂搬砖,代码都是提到 Gerrit ,有改动无限追加 patch 就完事了,等到没问题了,再贴出来 review 。不能理解为啥不能让领导看见。
    iam286
        66
    iam286  
       2022-06-11 14:13:39 +08:00
    弄个云服务器当开发机,电脑只作为客户端,用编辑器的云开发就可以了。
    andrew2558
        67
    andrew2558  
       2022-06-11 14:29:27 +08:00
    自己的分支写到哪都可以提交呀,有什么问题吗?
    pennai
        68
    pennai  
       2022-06-11 14:39:09 +08:00
    百度网盘的同步空间是现成的双向同步,你也可以自己搭 unison 或者 rsync 服务
    liunaijie
        69
    liunaijie  
       2022-06-11 15:20:26 +08:00
    git remove 添加上自己 fork 出来的仓库不就行了
    littlewing
        70
    littlewing  
       2022-06-11 15:33:31 +08:00
    为啥不能写一半提交,我每天下班前都要把代码 push 上去的,不管编不编得过,最后写完了 merge 的时候再 rebase 一次,哪个领导闲得蛋疼看你提交的代码
    mingdongshensen
        71
    mingdongshensen  
       2022-06-11 15:48:59 +08:00
    我们都是先在自己个人分支开发,写满意了再向正式的分支发送 merge request ,领导只把控正式分支的代码,不关注每个人各自的个人开发分支是啥样子。
    再说了,个人分支的某些临时的 commit 也是可以 squash 成为一个 commit 的,git 我理解很灵活
    sabercoding
        72
    sabercoding  
       2022-06-11 16:39:26 +08:00
    用的是 jetbrain 的自动同步到开发机,到家再下载下来,继续自动同步,回公司也一样操作。开发环境有单独的开发机就可以这样操作。
    fo2w
        73
    fo2w  
       2022-06-11 17:03:20 +08:00
    想每晚不留痕迹偷偷卷

    第二天惊艳所有人?
    documentzhangx66
        74
    documentzhangx66  
       2022-06-11 17:08:12 +08:00
    你不应该把代码同步到家里,而是要从家里远程到公司电脑上继续开发。这样才能保持环境的统一。
    stevefan1999
        75
    stevefan1999  
       2022-06-11 18:42:23 +08:00
    ikn0wzxc
        76
    ikn0wzxc  
       2022-06-11 19:13:51 +08:00
    坚果云
    pengtdyd
        77
    pengtdyd  
       2022-06-11 19:19:22 +08:00
    《下了班回家了还想用家里的电脑继续写代码》都这样了,还有必要下班吗,公司就是家,直接住在公司不就完了
    wuyajiao1
        78
    wuyajiao1  
       2022-06-11 19:25:33 +08:00
    坚果云
    EvineDeng
        79
    EvineDeng  
       2022-06-11 19:48:59 +08:00
    公司里搭个 code-server 服务,在公司在家全部直接在浏览器中使用。
    w3sun
        80
    w3sun  
       2022-06-11 19:59:36 +08:00
    一个同步服务就行
    EvineDeng
        81
    EvineDeng  
       2022-06-11 20:00:03 +08:00
    hanssx
        82
    hanssx  
       2022-06-11 22:22:59 +08:00
    insync + onedrive/google drive ,设置规则忽略.git 等文件夹,只在一处提交即可。
    cedoo22
        83
    cedoo22  
       2022-06-11 22:26:31 +08:00
    NAS
    aaa5838769
        84
    aaa5838769  
       2022-06-11 22:31:19 +08:00
    微力同步,国外也有一个类似这种产品。
    JounQin
        85
    JounQin  
       2022-06-11 22:36:51 +08:00 via iPhone
    跑了吧,楼主就是不会用 git 而已。
    psyer
        86
    psyer  
       2022-06-11 22:36:53 +08:00
    那用啥呢?
    @thinkershare #61
    JounQin
        87
    JounQin  
       2022-06-11 22:37:08 +08:00 via iPhone
    @JounQin (散了吧
    thinkershare
        88
    thinkershare  
       2022-06-11 23:00:01 +08:00
    psyer 解决方案非常多, 要根据实际情况来. 反正使用网盘同步是一个馊主意. 核心问题在于文件的数量, 有些项目, 动辄几万个文件, 一旦某一次大范围的修改项目, 就会导致云盘同步非常缓慢, 一旦同步缓慢, 就会导致多端代码不一致, 然后还会出现文件相互覆盖, 最终代码文件丢失. 即便有历史记录的云盘, 想要正确的恢复代码也非常困难, 我在坚果云和 OneDrive,GoogleDrive 使用上都遇到过这个问题, 最终官方给我的回复是他们没有为此种场景优化, 不建议使用他们的网盘同步代码. 核心原因还是这些网盘没有提供.gitignore 这种按需求忽略同步的层级覆盖配置. 坚果云的开发人员说他们正在研究, 最终应该会增加此功能. 不过我放弃了坚果云了. 自己配置了私有云服务器, 自己每天同步到自己的服务器. 而且公司的电脑我也可以直接 SSH 上去. 所以同步代码这个执念我就放弃了.
    thinkershare
        89
    thinkershare  
       2022-06-11 23:00:19 +08:00
    thinkershare
        90
    thinkershare  
       2022-06-11 23:00:29 +08:00
    @psyer 解决方案非常多, 要根据实际情况来. 反正使用网盘同步是一个馊主意. 核心问题在于文件的数量, 有些项目, 动辄几万个文件, 一旦某一次大范围的修改项目, 就会导致云盘同步非常缓慢, 一旦同步缓慢, 就会导致多端代码不一致, 然后还会出现文件相互覆盖, 最终代码文件丢失. 即便有历史记录的云盘, 想要正确的恢复代码也非常困难, 我在坚果云和 OneDrive,GoogleDrive 使用上都遇到过这个问题, 最终官方给我的回复是他们没有为此种场景优化, 不建议使用他们的网盘同步代码. 核心原因还是这些网盘没有提供.gitignore 这种按需求忽略同步的层级覆盖配置. 坚果云的开发人员说他们正在研究, 最终应该会增加此功能. 不过我放弃了坚果云了. 自己配置了私有云服务器, 自己每天同步到自己的服务器. 而且公司的电脑我也可以直接 SSH 上去. 所以同步代码这个执念我就放弃了.
    wellwellwell
        91
    wellwellwell  
       2022-06-11 23:17:13 +08:00   ❤️ 1
    可以创建一个 patch ,自己未提交的部分创建一个 patch ,放在云盘或者微信,任何可以同步到家里的工具。回家后在这个 patch 上面继续开发,修改后创建新的 patch 带回公司
    WhateverYouLike
        92
    WhateverYouLike  
       2022-06-11 23:33:14 +08:00 via Android
    这个我有经验。创建一个 git patch 文件,把文件拿回家以后 apply patch 就好了。
    Jetbrains IDE 界面上就能生成 patch ,也能 apply patch ,挺方便的。
    Kaiyuan
        93
    Kaiyuan  
       2022-06-11 23:38:22 +08:00
    我是存 NAS ,然后直接受体用 WebDAV ,台式用 SMB 。
    psyer
        94
    psyer  
       2022-06-12 00:34:35 +08:00 via Android
    @thinkershare 感谢!
    jeeyong
        95
    jeeyong  
       2022-06-12 02:52:35 +08:00
    整个 U 盘 不行吗?
    我开始自建得 svn
    后来索性就直接存 nas 往外拉
    我是在家台式机和笔记本切换.
    我有时候还 1,2 个项目换着写, 当放松换脑子呢.
    serafin
        96
    serafin  
       2022-06-12 06:06:54 +08:00
    Onedrive 同步。
    个人是用 VS code 的 remote explore 插件连接远程 SSH 服务器,未完成代码保存在服务器端。
    ToBeHacker
        97
    ToBeHacker  
       2022-06-12 08:05:51 +08:00
    fork 一下呗
    piecezzz
        98
    piecezzz  
       2022-06-12 08:13:58 +08:00
    好奇怪的问题,学下 git 吧
    xzysaber
        99
    xzysaber  
       2022-06-12 09:23:39 +08:00
    写到一半可以提交到自己建的克隆仓库吧?当然这是可选方法之一。
    jack778
        100
    jack778  
       2022-06-12 09:34:03 +08:00
    用 seafile 或者坚果云这类文件同步工具不知道能不能满足需求
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 21:28 · PVG 05:28 · LAX 13:28 · JFK 16:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.