我们需要在回购中的特定过去提交中添加一些文件,并且准备好重写历史记录,这样它就会影响到与该提交子级不同的所有分支。我们正在尝试使用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
我理解不好吗?
谢谢。
答案 0 :(得分:1)
您似乎以为,当您将提交范围写为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
开头的提交之前什么都没有。