加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 本地

mirror的git仓库怎么合并远程更新与本地提交

时间:2024-01-24 08:37:59  来源:http://www.gzrxw.net  作者:admin

mirror的git仓库怎么合并远程更新与本地提交

大概步骤是这样的

cd git-mirror

git clone ../git-ori --mirror

git-ori本身是个bare的主仓库,已经有提交内容,clone一个mirror出来

cd git-mirror-client/

git clone ../git-mirror/git-ori.git/

开发者从这个镜像clone出内容编辑,正常add commit push

之后回到镜像仓库查看

cd git-mirror/git-ori.git/

git log

看到开发者的内容提交到镜像的master分支上了,到这里都没有问题

这个时候,如果git-ori有更新,需要同步

我使用 git fetch

那么报告

From /home/user/git-mirror/../git-ori

+ c1700af...6ed5225 master -> master (forced update)

这个时候,提交到这个mirror镜像的记录由于没有再从镜像push到git-ori,同步的时候被洗掉了。

我刚才是随便找了自己机器cygwin上的git 1.7.5.1 测试的,之前有问题的环境是Ubuntu10 的git,版本没注意看

git怎么更新submodules

git 的 submodule 方式不会向仓库添加实际的的内容的,只会通过 .gitmodules 文件保留相应的子模块的哈希值。

由于你要真正要用的代码处于一个子目录中,我的方案是你先把这个子目录提取成一个单独的仓库(可以使用

git-subtree.sh

这个脚本),然后再添加这个仓库为 submodule(或者直接使用 git-subtree.sh 把实际的代码集成到你的项目,这样别人克隆就不需要更新 submodule 了)。这样做的缺点就是每当上游有更新,就需要对 submodule 的仓库做相应更新。

另外:git-subtree.sh 已经合并入 git 了,可能并不在 PATH 中,不能直接执行,不过应该在 git 的安装中的。

另一个思路:

建立 bundles 目录,添加原仓库为 submodule 到此,然后对需要的子目录做相对路径软链接,git 能够正确处理软链接。这可能是比较好的一个办法了,不需要额外维护同上游的同步。

-----------

你在子模块目录中进行的

已经是 git-subree.sh 的 split 操作了,这个时候该仓库已经和 orgin 完全不同了,等于重新建立了以该 subdirectory 为根的一个仓库,这个仓库中的对象只在你的本地,并不包含在 origin 的仓库中,所以最后才会无效的。

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门