一、git合并分支怎么只合并部分文件
在feature分支commit
切换至release分支
从feature分支检出相应文件
#branch feature
git commit -a -m msg
git checkout release
#branch release
git checkout feature file-01
git checkout feature file-x
...
git commit -a -m msg
二、如何用GIT来合并不同库里的代码
不大明白你说的历史记录都推送,不是把最新代码推送过去就行了么,说的这么复杂,如果是的话,命令git push origin 你的分支名。就可以了。
三、git使用:怎样merge一个分支的某个时间段内的所有提交到另一个分支
没看懂你表达的意思,但基本的合并分支的方法入下:
1.git checkout xxx(切换到你要将其他分支合并到的主分支上,xxx是分支名)
2.git merge xxx (合并操作)
3.git branch -d xxx(删除已经合并的分支,可选择不删除)
四、如何用 Git 合并两个库
backend 的历史记录被合并到 frontend 的历史记录中
backend 的文件树被读取并和 frontend 的文件树比对进行冲突解析:
如果发现冲突,以 frontend 为准,丢弃所有内容变更
没冲突的则保留(但是我们也不要的,见后面的内容)
这也是后面紧接着使用 --no-commit 的原因,该选项会在合并解析完成后中断,停留在最后的提交步骤之前。我们知道,只要你还没commit,那么 merge 的结果就暂时保存在缓存区中,只有完成提交步骤合并才算彻底完成(文件树被正式改变)。这就给我们一个机会来重新读取 backend 的文件树,并改写其保存的位置。
第4步创建目标子目录(很重要!)。
第5步开始 read-tree 了,--prefix 用于指定文件树读取后保存的路径,相对于当前路径并且一定要追加 /。-u 是说在读取后更新index,使得 working tree 与 index 保持同步。如果你不小心忘了加 -u,可以在这一步之后执行 git add --update,一样的效果。
这一步在背后有些细节比较抽象,之前的 merge 也曾读取过 backend 的文件树,但经过冲突解析之后已经面目全非,分析如下:
有冲突的被丢弃,因此一部分文件/目录其实已经不存在了
没冲突的被保留,但是路径还在 frontend 的根路径下
经过再次 read-tree,上面的“遗迹”得以修复,结果如下:
有冲突的因为已被丢弃,所以直接从本次读取中获得,且路径前面追加 --prefix 选项的值
没冲突的虽然被保留,但是由于本次读取追加了-- prefix,所以它们的路径也被改变,相当于在缓存里做了一次 git mv。
|