请问使用 Git 的时候,在错误分支上的修改怎么迁移到另一个分支上。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mekingname
V2EX    问与答

请问使用 Git 的时候,在错误分支上的修改怎么迁移到另一个分支上。

 
  •   mekingname 2021-07-02 14:44:15 +08:00 2031 次点击
    这是一个创建于 1643 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为了叙述方便,我们假设项目 Test 有一个 main 分支,里面有一个文件 a.py ,这个文件有 200 行代码。

    我现在 git checkout -b dev 切换到 dev 分支。然后把后 100 行代码改了。这样一来,main 分支和 dev 分支里面,对应的 a.py 文件前 100 行完全相同。后 100 行完全不同。

    以上是前提。

    今天,我原本想修改 dev 分支里面的代码,在 a.py 的前 100 行中改了 30 行内容。但是改完才发现我现在在 main 分支。

    现在,如果我直接执行git checkout dev,那么 git 会报错:

    error: 您对下列文件的本地修改将被检出操作覆盖: a.py 请在切换分支前提交或贮藏您的修改。 正在终止 

    请问,有什么办法把我这次的修改转到 dev 分支上面去。

    14 条回复    2021-07-05 13:57:51 +08:00
    yuang
        1
    yuang  
       2021-07-02 14:45:10 +08:00 via Android   3
    cherry pick
    cloudzqy
        2
    cloudzqy  
       2021-07-02 14:55:23 +08:00   1
    这种我一般用最朴实的操作去解决。
    先 git stash,然后 checkout 到 dev,然后 git stash pop,如果有冲突,然后解决冲突。
    虽然比较 low 但是因为指令比较熟,可控。
    Jooooooooo
        3
    Jooooooooo  
       2021-07-02 14:59:41 +08:00   1
    git stash, 保存住内容

    git checkout dev, 可以顺利切分支

    git stash pop, 在 dev 下刚刚保存的内容出来了
    mekingname
        4
    mekingname  
    OP
       2021-07-02 15:15:18 +08:00
    wuxi889
        5
    wuxi889  
       2021-07-02 17:46:22 +08:00
    sourcetree 解君愁
    yianing
        6
    yianing  
       2021-07-02 18:43:08 +08:00 via Android
    cherry-pick +1
    Thinklong
        7
    Thinklong  
       2021-07-02 18:49:54 +08:00   1
    特别不理解,很多 git 命令不会,还不用 git 可视化工具,贼爱用命令
    msg7086
        8
    msg7086  
       2021-07-03 02:04:19 +08:00
    常见两种做法。
    1. 依赖 stash,先存进 stash,然后切换分支,然后放出来。
    2. 依赖 commit,先提交成 commit,然后 rebase 分支。
    tnhmcm
        9
    tnhmcm  
       2021-07-03 15:20:13 +08:00
    我常用的操作:git checkout -m <branch_name>
    checkout 的参数-m (merge) 可以带着工作区的内容切换分支
    mekingname
        10
    mekingname  
    OP
       2021-07-05 10:30:33 +08:00
    @tnhmcm 你这个难道不是切换分支,然后把 main 的代码 merge 到 dev ?
    mekingname
        11
    mekingname  
    OP
       2021-07-05 10:31:37 +08:00
    @Thinklong 我可以通过 Makefile 把多个命令整合起来。但没有办法把可视化工具里面的多次鼠标点击事件整合起来。
    Thinklong
        12
    Thinklong  
       2021-07-05 10:43:05 +08:00
    @mekingname 请审题,我很多 git 命令不会的人,还不用可视化工具,git 命令都会的人,也不会遇到 lz 这种问题
    tnhmcm
        13
    tnhmcm  
       2021-07-05 13:29:01 +08:00
    @mekingname 并不是那样哦,你可以动手试验一下。
    mekingname
        14
    mekingname  
    OP
       2021-07-05 13:57:51 +08:00
    @Thinklong 知道你很厉害了。你在我的帖子下面让我审题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2012 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:56 PVG 08:56 LAX 16:56 JFK 19:56
    Do have faith in what you're doing.
    ubao msn 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