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

guz6ccqo  于 2023-03-06  发布在  Git
关注(0)|答案(1)|浏览(237)

我正在寻找在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文件夹。

dsekswqp

dsekswqp1#

如果我没有理解错的话,您希望将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

相关问题