情况是这样的
以前不会用版本控制工具,于是备份就直接把当前代码目录zip一下
有定制版需要做个分支的话就直接复制出一个文件夹,改个名字,然后在新文件夹中修改
于是就有了Project、Project(A)、Project(B)这样的文件夹
现在在学习git
于是就在主版本目录也就是 Project文件夹里创建一个库
此时如果又有需要定制的,我可以直接创建一个分支做为定制版
但是我怎么把以前复制并修改过的Project(A)、Project(B)做为主版本Project的两个分支呢?
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中 这样应该可以 |
2
bestsanmao OP |
3
Muninn 2015-04-21 14:09:40 +08:00
新建个分支切换过去 在文件级别把A都复制过来 然后把changes都commit就好
我假设你是在用vs2013的git管理器... |
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 分支名` 可以在创建的分支之间切换。 但愿我没理解错:) |
5
caixiexin 2015-04-21 14:19:50 +08:00 1
补充一下。。上面``之间指的是代码块,我还以为评论支持markdown语法 = =||
|
6
bestsanmao OP |
7
caixiexin 2015-04-21 14:41:28 +08:00 1
@bestsanmao 不会,不放心你可以操作前把project文件夹先拷贝一份试试,当初学的时候也这么担心。
|
8
Muninn 2015-04-21 15:07:24 +08:00
...你需要系统的学习下git 磨刀不误砍柴工
其实git还蛮复杂的... git pro 或者 廖雪峰那个教程 看完了还需要看下github workflow |
9
jimmy66 2015-04-21 15:15:38 +08:00
分支,合并,不少东西的,自己耐心看一下吧...自己checkout试一试,你就懂了。。windows下也有配的git命令行界面,以上
|
10
fourj 2015-04-21 16:16:10 +08:00
写过一个关于分支开发的gist: https://gist.github.com/tonycn/eeb147134dbedc2302e3
|
11
dotcool 2015-04-21 16:19:01 +08:00
推荐你使用sourcetree这个工具很相信的使用git,我已经用了很久了,有windows和mac版本的。
http://www.ejiakt.com/play/1901 这个是一个简单的视频教程,讲的还算ok啦。快去看看吧 |
12
arkilis 2015-04-23 10:04:53 +08:00
@caixiexin 基本上如他所说.
但是你要注意在主版本上开发之后, 分支版本也要进行同步. git merge --no-ff -m "commit msg" master 否则你切换到新的版本之后有冲突. |
13
bestsanmao OP @arkilis 什么意思
分支之间不是相互隔离的吗? |
14
arkilis 2015-04-23 10:36:23 +08:00
@bestsanmao
正是分支是隔离的. 所有你要保证你其他定制的版本与之同步. Git branch本身是用来实现测试功能的开发的, 最终(大部分情况下)要 merge回去. 而你的project(A) 和 Project(B)是类似于一个special定制版本. 如果不去从branch去merge的话. 3个版本进行同时开发, 冲突是不可避免的. |
15
bestsanmao OP @arkilis
我的理解是不同的branch是相互独立 互不影响的 我无论怎么改其中的一个分支,对其它分支都没有任何影响 不是这样吗? project(A) 跟 Project(B)是特殊客户定制的版本,一般不会跟主版本进行合并! |