作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试使用 git subtree 并遇到以下情况。
我使用 git subtree 将一个外部项目添加到我的 repo 中,我故意保留了上游项目的所有历史记录,因为我希望能够引用该项目的历史记录,并在以后为上游项目做出贡献。
事实证明,上游项目的另一个贡献者不小心将一个大文件推送到主分支。为了解决这个问题,上游项目重写了历史并强制推送到 master 上。在创建我的“monorepo”时,我包含了这个提交,我也想删除它。
如何更新我的存储库以反射(reflect)子树的新历史记录?
我的第一次尝试是使用 filter-branch 来完全删除子树和所有历史记录。
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch upstream-project-dir' --prune-empty HEAD
git init test-monorepo
cd ./test-monorepo
echo hello world > README
git add README
git commit -m 'initial commit'
git remote add thirdparty git@github.com:teivah/algodeck.git
git fetch thirdparty
git subtree add --prefix algodeck thirdparty master
echo dont panic >> algodeck/README.md
git commit -a -m 'test commit'
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch algodeck' --prune-empty HEAD
git log
最佳答案
git fetch upstream
# using one or more of the following commands :
git rebase --interactive
git filter-branch
...
git gc --prune=now
关于git - 在上游项目强制推送到 master 后,如何修复 git 子树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58750777/
我是一名优秀的程序员,十分优秀!