Github发布特定文件夹

19

我有一个代码仓库,其中有许多文件夹,但我只想为其中一个文件夹创建发布版本。

简单来说,这是为了一个游戏服务器,我只想为客户端创建发布版本,以向玩家提供客户端的下载方式。


你所说的“release”是指“标签(tag)”吗? - Ed.
如果它们可以单独发布,应该是单独的存储库。最好使用软件包管理工具将它们合并在一起。或者可以使用其他存储库创建存储库的选项。 - Schwern
发布时,需要提供一个压缩文件,但仅限于存储库中特定的文件夹。也许展示细节会有所帮助。https://github.com/crosenblum/kalbase 是我的主要存储库。但我想创建一个针对此文件夹更改的压缩文件发布。https://github.com/crosenblum/kalbase/tree/master/client - crosenblum
非常好的问题@crosenblum,你有没有找到从文件夹中发布的方法?我们有一个主存储库,其中包含许多文件夹,每个文件夹代表不同的数据库,每个数据库都有自己的版本,有什么想法吗? - dim_user
1
@dim_user 不确定2年后是否仍有用,但我刚刚在此处详细说明了如何自定义您的发布内容 - CPHPython
5个回答

3
发布版本时,自动生成的源代码 .zip 和 .tar.gz 文件将包含您在此处选择的分支中的所有文件: Selecting git branch for release
(来源:github.com 因此,我这样回答问题:

1. 使用仅包含发布内容的分支

  1. 创建一个新的分支,并检出其中的内容 (如 git checkout -b rel)
  2. 删除所有非发布文件和文件夹(不用担心,您只是从新分支中删除它们,请使用git branch确认您在正确的分支上)
  3. 将发布文件夹中的内容移动到根文件夹并删除空文件夹
  4. 暂存并提交所有更改(例如git add . + git commit -a -m "v1 发布"
  5. (可选:如果您喜欢使用 Github界面编写发布细节,不要执行此操作) 创建版本标签(例如 `git tag v1.0.0 -m "initial release"`)
  6. 将此新分支推送到远程仓库 (例如 git push --set-upstream origin rel)

2. 将可执行文件/安装程序添加到发布中

  1. 访问并登录您的帐户,前往https://github.com/USER-NAME/PROJECT-NAME/releases
  2. 点击一个新版本的按钮,并填写发行说明,选择上面创建的分支
  3. 由于GitHub限制上传大于50MB的文件(除非使用Git LFS),你的可执行文件和安装程序可以先被添加到发布本身再进行拖放上传:

Dragging files to release

发布将自动保存为草稿,只有在发布时才会生成源代码归档文件(不包括您添加的可执行文件)。

P.S.: 有关创建和编辑发布的步骤和图片,请参阅GitHub文档中心


1
如果client/文件夹内容可以从项目的其余部分重建,则最好不要对其进行版本控制。
无论是否进行版本控制,您都可以构建发布包(这里是client/文件夹的zip文件)并将其发布到您的存储库作为GitHub发布。
请参见“创建发布”。
它假定您首先在存储库上打标签,以便将该zip文件与该存储库的特定版本相关联。

4
你说的大部分内容让我感到很模糊,你能不能简单明了地说明我需要采取哪些具体步骤? - crosenblum
1
@crosenblum,请问在https://help.github.com/articles/creating-releases/中有哪些步骤不清楚? - VonC
有关分支、标签等的引用。 - crosenblum
@crosenblum 没错:发布与标签相关联:创建一个引用与您正在生成的内容匹配的仓库内容的标签,并上传与该标签相关联的发布。 - VonC
8
由于这篇回答并没有解答问题(尽管 GitHub 可能已经改变了他们的发布功能),因此被踩了。GitHub 的“创建发布”页面链接只描述了如何创建包含该项目所有源代码和额外上传文件的发布... 而不是如何排除由 GitHub 默认创建的 source.zip,而是要包括一个具有不同(子文件夹)内容的 .zip,这正是 OP 需要的。 - thclark
@crosenblum 不确定3年后是否仍有用,但我刚刚详细介绍了如何自定义您的发布内容的步骤。 - CPHPython

1

Github发布的官方文档

VonC分享的链接

=> 根据VonC分享的链接,我们了解到如果您只想在发布中包含一个文件,则必须使用该特定文件创建一个新分支_

=> 在发布的目标字段中提及新分支_


1
好的说明。已点赞。尽管我因未回答OP而被踩了。 - VonC

0
释放给定存储库中的给定文件夹(假设为Windows操作系统,否则步骤7可能会有所不同),您可以使用以下过程:
前往代码库发布页面(例如:https://github.com/<organization>/<repository>/releases)。
点击创建新发布按钮。
在“选择标签”下拉菜单中,以此格式输入版本号:v1.2.3(可能有助于通过页面右侧的链接了解语义化版本控制)。
选择刚创建的版本号(即确保它在下拉菜单中被选中)。
发布标题是可选的,跳过它或者输入简短而有意义的内容。
在“描述此发布”字段中,添加安装步骤和任何与你的发布相关的其他信息。
按如下方式创建发布软件包的 ZIP 文件(必须压缩文件夹,因为只有文件上传不可行):
a. 通过将源文件组织成目标设备中将要复制到的文件夹的方式在本地创建软件包。例如,如果目标应用程序有一个bin文件夹,而你只想部署bin\foo.dll并希望在目标上保留这个文件夹结构,则需要创建一个本地(临时)的bin文件夹,其中仅包含该 DLL。这个文件夹最终将成为你的软件包。不要包含不应复制到目标的文件/文件夹。
b. 右键单击你创建的文件夹(上面的示例中是bin),然后选择“发送到”>“压缩(zipped)文件夹”。
c. 给它一个合适的名称(例如MyAppPackage.zip)并通过拖放将其附加到发布。
点击“发布”按钮创建发布。

0
发布始终是针对可执行文件的 - 例如 *.exe, *.tar.gz, *.zip, *.apk 等 - 可能是这些文件的列表,但我还没有遇到过发布文件夹的情况。然而,您可以发布文件夹中的所有文件。
要在该文件夹中发布您的文件,您可以使用像这样的 actionhttps://github.com/marketplace/actions/upload-files-to-a-github-release。转到“带有 file_glob: 的示例”部分,其中有一个很好的示例。我已经将代码片段复制粘贴在这里,但我强烈建议您访问链接以深入了解。
name: Publish
on:
  push:
    tags:
      - '*'

jobs:
  build:
    name: Publish binaries
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Build
      run: cargo build --release

    - name: Upload binaries to release
      uses: svenstaro/upload-release-action@v2
      with:
        repo_token: ${{ secrets.GITHUB_TOKEN }}
        file: target/release/my/* # the folder which has all the files that you want to release
        tag: ${{ github.ref }}
        overwrite: true
        file_glob: true

祝你好运...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接