我正在寻找在 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/