首页 > 解决方案 > 从 Git 代码搜索中排除文件夹/创建存档分支

问题描述

TL;DR 版本

当我在 GitHub 上搜索时,某个文件夹中的文件使我的搜索结果变得混乱。我只需要这些文件用于归档目的,所以虽然我不想删除它们,但我想我可以定期将它们移动到一个单独的分支以清理 master 中的这个文件夹。

问题是如何以一种简单、可重复且不会过多污染我的历史的方式做到这一点。

语境

我(我们)的情况,我们有一个 git 存储库,它保存了我们数据模型的当前状态。所以它有一个名为 的文件TAB_ORDER.sql,其中包含create table创建表的语句。这些文件基本上是使用 RedGate Schema 比较生成的。

此外,存储库包含帮助我们部署更改的迁移脚本。拉取请求预计将包含对目标文件的更改,以及使其在实时数据库上发生的迁移。因此,要向该表添加一列,在单个 PR 中,我将添加一个带有alter table TAB_ORDER用于添加列的语句的迁移文件,并且我将修改 TAB_ORDER.sql 以便其中的 create 语句代表表的新状态,包括新列。

到目前为止,一切都很好。

问题

问题是,我喜欢使用 GitHub 来搜索某些数据库对象的用途,因为它速度很快,而且它允许我搜索我们所有的存储库。但是我的搜索被所有迁移脚本污染了。理想情况下,我想从搜索中排除那些,但 GitHub 不支持,而且看起来不会很快。

所以我基本上有两个选择,除了坚持它:

我更喜欢后者,所以我实际上可以保留我的迁移脚本,如果我愿意,可以搜索它们。当然,已删除的文件会保留在历史记录中,但要找到这些文件并不容易,因此保留它们不被删除是首选。

我的解决方案(我需要帮助)

如何轻松地将这些迁移脚本移动到单独的存档分支。鉴于我希望开发人员通过迁移和修改创建单个 PR,归档将是一个我可以定期执行的单独过程,但我真的不知道将文件从主文件“移动”到一个分支,基本上。

当然,也欢迎替代解决方案。

标签: gitgithubbrancharchive

解决方案


The easiest I can think of is:

Create an archive branch

git checkout -b archive

Afterwards copy those files to your new archive branch via:

git show <branch_name>:path/to/file >path/to/local/file

Now checkout your master branch again and remove your unwanted files in the master branch.

rm file

Afterwards update your master repository again

git add *    
git commit -m "removed file"    
git push origin master

推荐阅读