Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Git代码搜索/创建归档分支中排除文件夹_Git_Github_Branch_Archive - Fatal编程技术网

从Git代码搜索/创建归档分支中排除文件夹

从Git代码搜索/创建归档分支中排除文件夹,git,github,branch,archive,Git,Github,Branch,Archive,TL;DR版本 当我在GitHub上搜索时,某个文件夹中的文件将我的搜索结果弄乱。我只需要出于归档目的而使用这些文件,所以尽管我不想删除它们,但我认为可以定期将它们移动到单独的分支以清理master中的此文件夹 问题是如何做到这一点,使其简单、可重复,并且不会太多地污染我的历史 上下文 在我(我们)的情况下,我们有一个保存数据模型当前状态的git存储库。因此它有一个名为TAB_ORDER.sql的文件,其中包含用于创建表的createtable语句。 这些文件基本上是使用RedGate模式比较生

TL;DR版本

当我在GitHub上搜索时,某个文件夹中的文件将我的搜索结果弄乱。我只需要出于归档目的而使用这些文件,所以尽管我不想删除它们,但我认为可以定期将它们移动到单独的分支以清理master中的此文件夹

问题是如何做到这一点,使其简单、可重复,并且不会太多地污染我的历史

上下文

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

此外,存储库包含帮助我们部署更改的迁移脚本。pull请求将包含对对象文件的更改,以及使其发生在实时数据库上的迁移。因此,要向该表中添加一列,在单个PR中,我将添加一个迁移文件,其中包含一个用于添加列的
alter table TAB\u ORDER
语句,并修改TAB\u ORDER.sql,以便其中的create语句表示表的新状态,包括新列

到目前为止还不错

问题

问题是,我喜欢使用GitHub搜索某些数据库对象的使用情况,因为它很快,而且它允许我搜索所有的repo。但是我的搜索被所有迁移脚本所污染。理想情况下,我希望从搜索中排除这些内容,但GitHub不支持这一点,而且看起来也不会很快实现

因此,除了坚持下去,我基本上有两个选择:

  • 完全删除迁移脚本
  • 将迁移保留在单独的分支中,但不保留在主分支中
我更喜欢后者,这样我就可以保留我的迁移脚本,并在需要时搜索它们。当然,已删除的文件会保存在历史记录中,但要找到这些文件已经不容易了,所以最好不要删除它们

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

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


当然,也欢迎其他解决方案。

我能想到的最简单的方法是:

创建归档分支

git checkout -b archive
之后,通过以下方式将这些文件复制到新的存档分支机构:

git show <branch_name>:path/to/file >path/to/local/file
然后再次更新主存储库

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

实际上,您可以从搜索结果中排除路径。我以前想不出来,搜索的时候我只找到了不可能的证据。但是一位同事(谢谢,韦斯!)刚刚向我指出,您只需将
-path
添加到搜索查询中,即可过滤出一个文件夹

因此,要在所有存储库中搜索TAB_ORDER的使用情况,除了在Migrations文件夹中(但愿其他Repo在同名文件夹中没有相关搜索结果),我只需搜索以下内容:

TAB_ORDER -path:Migrations

看起来路径必须是完整路径(相对于回购),因此如果您有路径
a/b/c
,则可以添加
-path:a
,或
-path:a/b/c
,但不仅仅是
-path:c

您使用的是Oracle还是SQL Server?我为Redgate工作,我们很感兴趣的是,您正在搜索scripts文件夹中的对象引用。我们想知道,与文件搜索相比,我们是否应该在工具中更好地解决这个问题?是的,有不同的搜索方法。文件是一个选项,如果我只在那个repo中搜索的话。我甚至可以搜索数据库本身。但是GitHub非常快(它是一个相当大的Oracle数据库),我也用它来搜索其他代码库的其他repo。特别是如果我想找到其他哪些项目使用某个数据库对象,GitHub非常方便,因为我们有几十个存储库,我甚至没有将它们全部签出。GitHub可以一次搜索所有这些文件。如果我想检查变更的影响,这是一个非常有用的工具。感谢您发布解决方案。我也不知道-路径,所以我也学到了一些东西!为了其他用户的利益,我们甚至应该将这个“把戏”记录在某个地方:)
TAB_ORDER -path:Migrations