首页 > 解决方案 > git 上的文件夹名称与本地不同 // 在拉取之前执行 github 操作

问题描述

我已经为此苦苦挣扎了太久了,我找不到一种方法来实现一件非常简单的事情(至少我是这么想的)。

我的用例是这样的:

我是一名 Unity 开发人员,我正在开发多个 UPM 包,任何人都可以使用 Unity 的包管理器安装这些包。在一个包中,您可以有一个名为(确切地说)“Samples~”的文件夹,当您使用包管理器上的 UI 按钮下载此包时,可以将其导入项目中:

芬欧汇川

问题是,所有最后以“~”命名的文件夹都隐藏在项目视图中。

所以,基本上,我需要的是:在我的电脑上,文件夹名称应该是“Samples”,但是在 git 上发布时,文件夹应该命名为“Samples~”。Atm,使用 github 操作,我可以在每次推送后将 Samples 重命名为 Samples~,这很棒!但我不能完全相反,因为 github 操作没有“拉”事件......

这是我的脚本可以正常工作:

name: Rename tilded folders
on:
  push:
    branches:
    - master

jobs:
  rename_samples:
    name: Create branches
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - run: |
            git checkout master
            git config --global user.name 'github-bot'
            git config --global user.email 'github-bot@users.noreply.github.com'
            if [[ -d "Samples" ]]; then
              git mv Samples Samples~
              rm -f Samples.meta
              git commit -am "rename: Samples => Samples~"
              git push origin master
            else
              echo "${i}Samples does not exist"
            fi
            if [[ -d "Documentation" ]]; then
              git mv Documentation Documentation~
              rm -f Documentation.meta
              git commit -am "rename: Documentation => Documentation~"
              git push origin master
            else
              echo "${i}Documentation does not exist"
            fi

有没有一种简单的方法来实现我所需要的(基本上,在 git repo 中有一个不同的名称,或者只有在版本中更好)?

标签: gitunity3dgithubgithub-actions

解决方案


这不是 github 操作处理的事情。见事件

如果我要继续您的推理,我可能会建议您在 IDE 中需要一些东西来处理文件夹,就好像它们没有波浪号一样。

或者 guggest 使用一个git 钩子,在下载文件夹后重命名它们,并在提交之前恢复名称。

这些解决方案很好,但非常脆弱和复杂。

IMO,您应该关注发布时发生的事情,而不是在推送和提交之间重命名文件,我建议您有一个发布分支,其中包含最终将发布的代码。

这意味着在您上面的工作流程中,更改此行:

git push origin master

git push origin release/next

现在您无需修改​​ master 中的代码,只需将所有内容推送到您的发布分支,当您准备好创建发布时,您就可以使用该分支。

HTH。


推荐阅读