TL; DR版本
当我在GitHub上搜索时,某个文件夹中的文件使搜索结果混乱。我仅出于归档目的需要这些文件,因此尽管我不想删除它们,但我想我可以定期将它们移到单独的分支中,以清理master中的该文件夹。
问题是如何以一种简单,可重复且不会过多污染我的历史的方式来做到这一点。
上下文
我(我们)的情况是,我们有一个git存储库,用于保存数据模型的当前状态。因此,它有一个名为TAB_ORDER.sql
的文件,其中包含用于创建表的create table
语句。
这些文件基本上是使用RedGate Schema比较生成的。
此外,存储库包含迁移脚本,可帮助我们部署更改。拉取请求应包含对目标文件的更改以及要使其在实时数据库中发生的迁移。因此,要在单个PR中向该表中添加列,我将添加带有alter table TAB_ORDER
语句的迁移文件以添加列,并且我将修改TAB_ORDER.sql,以便在那里的create语句表示新状态。表的内容,包括新列。
到目前为止很好。
问题
问题是,我喜欢使用GitHub来搜索某些数据库对象的使用,因为它速度很快,而且它允许我搜索所有存储库。但是我的搜索被所有迁移脚本所污染。理想情况下,我想从搜索中排除那些,但是GitHub不支持它,而且看起来很快也不会。
因此,除了坚持使用以外,我基本上有两个选择:
我希望使用后者,因此我实际上可以保留迁移脚本,并在需要时搜索它们。当然,已删除的文件仍保留在历史记录中,但是再也不容易找到这些文件,因此,将其保留为不删除状态具有优先权。
我的解决方案(需要帮助)
如何轻松地将这些迁移脚本移至单独的归档分支。考虑到我希望开发人员通过迁移和修改来创建单个PR的事实,归档将是我可以定期执行的单独过程,但是我真的不知道将文件从主文件“移动”到主文件的好方法。基本上是一个分支。
当然也欢迎使用替代解决方案。
答案 0 :(得分:1)
最容易想到的是:
创建档案分支
git checkout -b存档
然后通过以下方式将这些文件复制到新的存档分支中:
$ git show:path / to / file> path / to / local / file
现在再次检出master分支,然后删除master分支中不需要的文件。
rm文件
然后再次更新您的主存储库
git add *
git commit -m“已删除文件”
git push origin master
答案 1 :(得分:1)
事实证明,您实际上可以从搜索结果中排除路径。我以前无法弄清楚,在搜索时,我只发现不可能的证据。但是一位同事(感谢Wes!)刚刚向我指出,您只需在搜索查询中添加-path
即可过滤出一个文件夹。
因此要在所有存储库中搜索TAB_ORDER的使用,除了在Migrations文件夹中(手指交叉表示其他存储库在同名文件夹中没有相关的搜索结果),我可以简单地搜索以下内容:< / p>
TAB_ORDER -path:Migrations
看起来路径必须是完整路径(相对于仓库),因此,如果您有路径a/b/c
,则可以添加-path:a
或-path:a/b/c
,但不能添加只是-path:c
。