git 新手求教分支合并问题! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
bestsanmao
V2EX    git

git 新手求教分支合并问题!

  •  
  •   bestsanmao 2015-04-21 12:26:39 +08:00 3866 次点击
    这是一个创建于 3830 天前的主题,其中的信息可能已经有所发展或是发生改变。

    情况是这样的
    以前不会用版本控制工具,于是备份就直接把当前代码目录zip一下
    有定制版需要做个分支的话就直接复制出一个文件夹,改个名字,然后在新文件夹中修改
    于是就有了Project、Project(A)、Project(B)这样的文件夹

    现在在学习git
    于是就在主版本目录也就是 Project文件夹里创建一个库
    此时如果又有需要定制的,我可以直接创建一个分支做为定制版
    但是我怎么把以前复制并修改过的Project(A)、Project(B)做为主版本Project的两个分支呢?

    16 条回复    2015-11-03 08:42:25 +08:00
    YORYOR
        1
    YORYOR  
       2015-04-21 12:40:05 +08:00   1
    $git checkout -b branch
    $diff -urN brach/ Project(A)/ > diff.path //用linux的diff命令比较生成一个patch 非 git diff
    $patch -p0 < diff.patch //将patch打到branch中

    这样应该可以
    bestsanmao
        2
    bestsanmao  
    OP
       2015-04-21 13:15:00 +08:00
    @YORYOR 不好意思
    我这个是在win下
    代码是vc工程
    Muninn
        3
    Muninn  
       2015-04-21 14:09:40 +08:00
    新建个分支切换过去 在文件级别把A都复制过来 然后把changes都commit就好
    我假设你是在用vs2013的git管理器...
    caixiexin
        4
    caixiexin  
       2015-04-21 14:17:51 +08:00
    看样子好象是不熟悉怎么做分支管理,应该是这样:
    新建一个分支,然后把Project(A) 文件拷贝进现在的代码目录,提交修改。一个区别于master分支的分支就出现了。然后用`git checkoout 分支名`在各分支之间切换。
    具体步骤就是:
    1. 当前处于master分支
    2. 执行命令`git checkout -b 新分支名`,建立并切换到新分支。新建的分支是从master分支创建的,所以目前文件跟master一样。
    3. 把你要修改的文件覆盖掉(相当于在新分支上做了修改)
    4. 执行`git add .` 和 `git commit -m "commit日志"` 提交新分支的所有修改
    5. 用`checkout 分支名` 可以在创建的分支之间切换。

    但愿我没理解错:)
    caixiexin
        5
    caixiexin  
       2015-04-21 14:19:50 +08:00   1
    补充一下。。上面``之间指的是代码块,我还以为评论支持markdown语法 = =||
    bestsanmao
        6
    bestsanmao  
    OP
       2015-04-21 14:34:36 +08:00
    @Muninn
    @caixiexin
    谢谢两位
    我明白两位的意思了
    先在主版本的目录上建立个分支
    然后把之前自己复制出来的分支文件覆盖到主目录里再commit一下
    是吧

    这样不会把主版本的文件给覆盖没了吧(看来我对git还是不太放心,呵呵)

    再次感谢
    caixiexin
        7
    caixiexin  
       2015-04-21 14:41:28 +08:00   1
    @bestsanmao 不会,不放心你可以操作前把project文件夹先拷贝一份试试,当初学的时候也这么担心。
    Muninn
        8
    Muninn  
       2015-04-21 15:07:24 +08:00
    ...你需要系统的学习下git 磨刀不误砍柴工
    其实git还蛮复杂的...
    git pro 或者 廖雪峰那个教程
    看完了还需要看下github workflow
    jimmy66
        9
    jimmy66  
       2015-04-21 15:15:38 +08:00
    分支,合并,不少东西的,自己耐心看一下吧...自己checkout试一试,你就懂了。。windows下也有配的git命令行界面,以上
    fourj
        10
    fourj  
       2015-04-21 16:16:10 +08:00
    写过一个关于分支开发的gist: https://gist.github.com/tonycn/eeb147134dbedc2302e3
    dotcool
        11
    dotcool  
       2015-04-21 16:19:01 +08:00
    推荐你使用sourcetree这个工具很相信的使用git,我已经用了很久了,有windows和mac版本的。
    http://www.ejiakt.com/play/1901 这个是一个简单的视频教程,讲的还算ok啦。快去看看吧
    arkilis
        12
    arkilis  
       2015-04-23 10:04:53 +08:00
    @caixiexin 基本上如他所说.

    但是你要注意在主版本上开发之后, 分支版本也要进行同步.

    git merge --no-ff -m "commit msg" master

    否则你切换到新的版本之后有冲突.
    bestsanmao
        13
    bestsanmao  
    OP
       2015-04-23 10:20:49 +08:00
    @arkilis 什么意思
    分支之间不是相互隔离的吗?
    arkilis
        14
    arkilis  
       2015-04-23 10:36:23 +08:00
    @bestsanmao

    正是分支是隔离的. 所有你要保证你其他定制的版本与之同步.

    Git branch本身是用来实现测试功能的开发的, 最终(大部分情况下)要 merge回去.

    而你的project(A) 和 Project(B)是类似于一个special定制版本. 如果不去从branch去merge的话. 3个版本进行同时开发, 冲突是不可避免的.
    bestsanmao
        15
    bestsanmao  
    OP
       2015-04-23 11:01:33 +08:00
    @arkilis
    我的理解是不同的branch是相互独立 互不影响的
    我无论怎么改其中的一个分支,对其它分支都没有任何影响
    不是这样吗?

    project(A) 跟 Project(B)是特殊客户定制的版本,一般不会跟主版本进行合并!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2577 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 15:37 PVG 23:37 LAX 08:37 JFK 11:37
    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