Git - 如何将特定文件夹从一个分支复制到具有不同路径的另一个分支?

标签 git github github-pages

我正在寻找在 GitHub Pages 上自动部署 GitHub 项目的方法。

我有一个文件夹 packages/client/dist/ ,其中包含 dev 分支中的部署构建。我正在寻找一个 git 命令,它可以将其内容复制/推送到我的项目的 deploy 分支的根文件夹(以便使其在 GitHub Pages 上可用)。如果它还可以在推送之前删除那里的所有旧文件,那就太好了。

所以我需要让文件像这样:@dev/packages/client/dist/(本地)> @deploy/(远程)。

我的想法是在 dev 分支进行一些更改并运行 yarn build 后,我编写类似 yarn deploy:ghp 的内容做上面提到的事情。

我玩过git checkout,但它似乎没有达到我的需要。 packages/client/dist/ 位于 .gitignore 中也可能是一个问题。任何帮助/建议将不胜感激。

我在 dev 分支上尝试了以下操作:

git add -f -- ./packages/client/dist
git commit -m "chore: test deploy commit" -- ./
git push -f origin dev:deploy

git add -f -- ./packages/client/dist
git stash
git checkout -b deploy
git stash pop
git commit -m "chore: test deploy commit" -- ./
git push -f origin deploy

但它只是将所有文件从 dev 推送到 deploy(之前是空的),而没有复制 dist 文件夹。

最佳答案

如果我理解正确的话,您希望将 packages/client/dist 目录从 dev 分支发布到 deploy 的根目录> 分支。

从您的 dev 分支开始,您可以执行以下操作(假设您的 gh-pages 分支已存在):

# check out gh-pages branch to directory gh-pages
git worktree add gh-pages gh-pages

# ensure branch is up-to-date with remote
git -C gh-pages pull origin gh-pages

# replace contents of gh-pages/ with contents of your dist directory
# note that the trailing slash on "packages/client/dist/" is important
rsync -a --exclude=.git --delete packages/client/dist/ gh-pages/

# update gh-pages branch with new content
git -C gh-pages add .
git -C gh-pages commit -m 'Deploy files'

# push branch to remote
git -C gh-pages push origin HEAD

# clean up
rm -rf gh-pages
git worktree prune

如果这一切看起来有点复杂,请使用类似 ghp-import script 的内容。 ;使用该工具,该过程如下所示:

ghp-import --push packages/client/dist

关于Git - 如何将特定文件夹从一个分支复制到具有不同路径的另一个分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75566134/

相关文章:

ruby-on-rails - Capistrano 部署(cap 部署)失败,身份验证错误

GitHub:将分支映射到 Windows 上的不同本地目录

javascript - 如何从目录加载随机文件

git - 使用 Dockerfile 运行步骤中的 git clone 提示输入用户名/密码

git - 从服务器 pull Git

git - git post-receive hook 如何获取它正在运行的 repo 的名称?

git - 迁移 Git 主机

jekyll - 如何在Liquid(Jekyll)中获取页面的url

github - 当内容存储在 docs 文件夹中时,如何通过自定义域提供 Github 页面?

ios - Git 推送本地 PodSpec