我有一个大而旧的项目,我想将一个文件夹变成一个子模块
我用过
git filter-branch --subdirectory-filter <folder name> -- --all
将其与项目的其余部分分开,并保留所有与之相关的历史记录
它做了我想要的,但是有一些与文件夹无关的提交
经过一番研究,我发现所有无关的提交都来自两个孤儿分支
我做了更多研究,发现孤立分支的提交包含在
git rev-list --all
问题是,如果孤立分支与我指定的文件夹没有任何关系,为什么不删除它们?
如果我无法在同一命令中删除其历史记录,该怎么办才能删除所有孤立分支历史记录?
修改:
我已经尝试使用--prune-empty
选项无济于事
答案 0 :(得分:0)
您可以尝试添加--prune-empty
选项,它将删除使子目录保持不变的提交。
答案 1 :(得分:0)
解决方案是运行以下命令:
writefile=open("leaderboard.csv","a")
writefile.write(name+", "points)
writefile.close()
readfile=open("leaderboard.csv","r")
或者,或者-在运行`filter-branch命令之前,运行以下命令:
import csv
name = 'Test'
score = 3
with open('scores.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow([name, score])
with open('scores.csv') as f:
reader = csv.reader(f)
scores = sorted(reader, key=lambda row: (float(row[1]), row[0]))
top5 = scores[-5:]
其中test1 3
test2 3
test3 3
是用git push origin : <orphan_branch_name> --force
(或)分隔的孤立分支名称