我正在开发一个包含 src / 目录的大型应用程序,我只想分享这个 src / 目录。
因此,我想定期将此 src / 目录推送到另一个存储库(并保留已制作的标记和分支,并包含对 src / <内的文件所做的更改/ strong>)。
到目前为止,我已经完成了以下工作:
git clone MyBigProject /tmp/foo
cd /tmp/foo
# I want to share the master and 1.0, 1.1, 2.0,... branches
REMOTE_BRANCHES=`git branch -r | tr -d " " | grep "^origin/[0-9]\.[0-9]$"`
for BRANCH in $REMOTE_BRANCHES; do
# So I need to track them locally in order to rewrite them
git checkout --track $BRANCH
done
git filter-branch --tree-filter 'rm -rf `ls -1 | grep -v src`' --prune-empty -- --all
git push MySharedRepo --all
git push MySharedRepo --tags
问题是filter-branch
会创建新的提交哈希值,因此推送到MySharedRepo
会带来很多冲突。这也意味着每次推送共享存储库时它都会破坏所有用户引用。
我想指出MySharedRepo
是一个只读存储库。
过去几天我一直在寻找这个问题的正确解决方案,所以如果你能帮助我解决它,请提前感谢!
答案 0 :(得分:0)
通过filter-branch仅共享子目录是正确的路径。最佳地,如果src
目录可以独立存在,则主(父)存储库可以从包含filter-branch
存储库作为子模块中受益。这实现了以下目标:
src
内容和父项目提供单独的存储库。src
的读取/读取/写入访问作为存储库
(如果在https://github.com等中央存储库上共享)。git filter-branch
需要分享src
次努力
醇>