有大佬知道 idea 怎么对同一个项目同时打开不同分支的窗口 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
mossrock
V2EX    程序员

有大佬知道 idea 怎么对同一个项目同时打开不同分支的窗口

  •  
  •   mossrock 2022-05-13 10:13:44 +08:00 8124 次点击
    这是一个创建于 1247 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候代码上线日期不一样,但是后面开发的东西需要看看还没上线的代码,就很难受。

    不知道有没有大佬有办法,对于同一个项目,idea 中打开一个分支就打开一个新窗口。

    34 条回复    2022-05-15 11:49:30 +08:00
    crayygy
        1
    crayygy  
       2022-05-13 10:18:09 +08:00
    Annotation 或者 从 Git 那个 tab 下面找其他 branch 下面的 commit 的 diff
    xuanbg
        2
    xuanbg  
       2022-05-13 10:18:32 +08:00
    一般来说,看什么版本的代码就切什么分支或 tag 。比较代码就直接双击提交记录。同时看多个分支的代码,在同一台电脑上是不可能的任务。唯一的办法是多台电脑,每台一个分支就行了。
    xuanbg
        3
    xuanbg  
       2022-05-13 10:20:41 +08:00
    @crayygy diff 有局限性,只能显示相邻版本的差异。且不能看某个版本的完整代码。
    hzymyp
        4
    hzymyp  
       2022-05-13 10:22:25 +08:00 via Android   9
    本地 clone 多份
    fqy12300
        5
    fqy12300  
       2022-05-13 10:22:38 +08:00   1
    编辑器看旧代码,GitHub / Gitlab 看新代码?
    book1925
        6
    book1925  
       2022-05-13 10:24:29 +08:00
    我是土办法。。clone 一份然后 vscode 打开拖到副屏看。。。
    acoldfox
        7
    acoldfox  
       2022-05-13 10:26:29 +08:00   1
    好像做不到,除非克隆一个文件夹出来,可以试试官方建议的 git worktree
    rb6221
        8
    rb6221  
       2022-05-13 10:27:56 +08:00
    你切分支难道不是本地切吗?本地仓库不能同时处于好几个分支上啊,用无论什么 IDE 打开都是一个分支,怎么可能同时有 2 个分支。2 个分支都做不到,更别提 2 个窗口了
    mossrock
        9
    mossrock  
    OP
       2022-05-13 10:37:01 +08:00
    好吧,主要 diff 看的时候不那么灵活,看来就本地 clone 是最佳方案。。。就有时候要拆代码,commit 较多想直接复制下,切个分支就忘记写的什么了。
    taco1wang
        10
    taco1wang  
       2022-05-13 10:43:13 +08:00
    右键那个分支,可以 compare with other branch
    crayygy
        11
    crayygy  
       2022-05-13 10:46:20 +08:00
    如果只是为了 View 的话,没有网页工具能用么,GitHub/Gitlab 用来看代码做的也挺好的,也有插件可以支持跳转
    czyt
        12
    czyt  
       2022-05-13 10:51:08 +08:00
    直接 diff
    Veneris
        13
    Veneris  
       2022-05-13 10:53:08 +08:00
    和你 idea 没关系,你这个项目在 git 就只能处于一个分支,几个 idea 也是一样的
    Jooooooooo
        14
    Jooooooooo  
       2022-05-13 10:54:17 +08:00
    你 git 切完分支磁盘里的代码就变了, idea 也无能为力呀.
    ranNice
        15
    ranNice  
       2022-05-13 11:05:09 +08:00
    Git Worktree 完美契合楼组诉求
    ranNice
        16
    ranNice  
       2022-05-13 11:05:31 +08:00   1
    yc8332
        17
    yc8332  
       2022-05-13 11:06:06 +08:00
    不是可以看不同分支的差异吗?
    wolfie
        18
    wolfie  
       2022-05-13 11:06:36 +08:00
    compare with branch ,选择远程分支比对。
    liuhuansir
        19
    liuhuansir  
       2022-05-13 11:11:01 +08:00
    本地 clone 每个分支的代码,打开多个 idea 窗口,想同时看几个分支取决于你的内存空间
    admol
        20
    admol  
       2022-05-13 11:11:48 +08:00   3
    Git Worktree

    存在多个分支,需要不停的切换分支来进行开发或者修改 BUG 时,并且是持续不断的。

    传统的解决办法是克隆仓库到多个目录,切换到不同的分支来进行开发。

    Git 从 2.6.0 开始新增一个命令`git worktree` 来解决这种场景下的问题。
    zamaojava
        21
    zamaojava  
       2022-05-13 11:27:22 +08:00
    这需求太冷门,我倒是遇到过一次,合了垃圾分支代码,快上线了,根本撤销不了,赶紧切了新分支,把需求代码重新复制过来。当时就重新 clone 了项目,然后用 idea 打开了他,就可以 2 个窗口了
    rehoni
        22
    rehoni  
       2022-05-13 11:30:18 +08:00
    再拉一个到本地,idea 当两个项目打开
    mossrock
        23
    mossrock  
    OP
       2022-05-13 11:40:40 +08:00
    @ranNice 看了看描述,确实感觉有点类似,晚上试一试,感谢大佬
    xixitt26
        24
    xixitt26  
       2022-05-13 13:45:24 +08:00
    云端 IDE 是不是能支持。。。
    vanxy
        25
    vanxy  
       2022-05-13 14:51:21 +08:00
    直接右键 -> Git -> Compare with Branch , 选择对比的分支, 就出来左右分栏的编辑器了
    misdake
        26
    misdake  
       2022-05-13 15:15:16 +08:00
    commit 上右键,show repository at revision ,给你一个这个版本的文件树,就能随便看了
    lslvxy
        27
    lslvxy  
       2022-05-13 15:54:08 +08:00
    CV 一个不就行了,两个文件夹分别 checkout 不同的分支
    456789
        28
    456789  
       2022-05-13 19:18:44 +08:00
    project 视图下随便一个文件右击 git -> compare with other branch
    Nachtblut
        29
    Nachtblut  
       2022-05-13 19:24:46 +08:00 via iPhone
    git worktree
    daveh
        30
    daveh  
       2022-05-13 19:41:05 +08:00 via iPhone
    @misdake 对头,show repository at revision 这个是正解,选要看的其他分支的最新 commit 点,右键 show ,直接能查看那个分支所有代码,不需要额外 checkout 动作。
    另外如果想只看差异文件,在分支名右键 Show Diff with Woking Tree 也行,就只看所有差异文件。
    chasingstar
        31
    chasingstar  
       2022-05-13 21:17:32 +08:00
    再 clone 一份代码好像不是什么难事
    yeqizhang
        32
    yeqizhang  
       2022-05-13 21:43:03 +08:00 via Android
    @lslvxy 哈哈,我之前就是这样的,都不用克隆的
    sola97
        33
    sola97  
       2022-05-13 21:46:42 +08:00 via Android
    git worktree
    AllenTsui
        34
    AllenTsui  
       2022-05-15 11:49:30 +08:00
    把项目多复制几个 working copy1 、working copy2 、working copy3...我复制了 5 个,项目并行开发从来不切分支,很舒服
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3839 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 05:11 PVG 13:11 LAX 22:11 JFK 01:11
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86