git - 如何使用 git filter-branch 将文件添加到特定提交?
问题描述
我们需要在回购的特定过去提交中添加一些文件,并且我们准备好重写历史记录,以便它影响与该提交的子代不同的所有分支。我们正在尝试为此使用 git filter-branch ,使用 add ,因为一旦我们将文件添加到提交中,它就不会添加到子项中,但是我们找不到正确的参数来阻止它影响某些并发不同的提交。看图理解。
我们正在使用此命令针对红色提交,但文件出现在紫色提交上 - 为什么?- 它也出现在绿色提交上,我们不希望它影响代码路径,只出现在红色提交上,然后通过所有子提交和合并继承。
git filter-branch --index-filter "cp C:/Users/asdf/Documents/IdeaProj
ects/git-crypt-tests/.gitattributes . && git add .gitattributes" 72c7e292ddd134c04285f3530afc829fd38de4
28..HEAD
我怎么理解不好?
谢谢你。
解决方案
看起来您认为当您编写提交范围时A..B
,它将包括边界。但事实并非如此。这种表示法是 的缩写B ^A
,即直到 的所有内容B
,但不包括直到 的所有内容A
。这从范围中删除了“下限” A
。解决方案是你写A~
,意思是“的祖先A
”:A~..B
。
此外,由于您确切知道要将文件添加到哪些提交以及不想添加它们,因此您可以限制修订遍历器仅列出所需的提交:
git filter-branch --index-filter "cp C:/Users/asdf/Documents/IdeaProjects/git-crypt-tests/.gitattributes . && git add .gitattributes" -- HEAD --not 72c7e29~ ":/Fix Prestapp"
也就是说,您说您想要所有提交到HEAD
,但在72c7e29~
消息以 开头的提交之前或之前都没有Fix Prestapp
。
推荐阅读
- html - Shopify Help Secondary Blog Section on a different page
- haskell - How to chain a sequence of optional operations to be performed onto a "variable"?
- amazon-web-services - 使用全局表进行静态 DynamoDB 加密
- python - Python Cerberus: multipe schemas for a single filed?
- google-bigquery - BigQuery - Export query results to local file/Google storage
- html - 如何在 html/css 的移动视图中水平滚动方框?
- r - mocky 和 stubthat 和有什么不一样?
- node.js - Express Supertest 总是对 promise 中抛出的错误给出超时错误
- c++ - QTablewidget 稍后被扩展(或绘制)
- ios - 使用动画推送视图控制器会冻结 UI