我正在开发一个包含src/目录的大型应用程序,我只想共享这个src/目录。
因此,我想定期将此src/目录推送到另一个存储库(并保留已创建的标签和分支,并包含对src/内的文件所做的更改)。
到目前为止,我已经完成了以下工作:
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
是一个只读存储库。
在过去的几天里我一直在寻找解决这个问题的正确方法,所以如果你能帮助我解决它,请提前感谢!