Git with Bash:导出子目录而不获取父文件夹
我有一个小小的个人网站 为了学习新东西,我将git用于我的网站,我想创建一个bash脚本,该脚本将执行以下步骤:Git with Bash:导出子目录而不获取父文件夹,git,bash,release,git-checkout,Git,Bash,Release,Git Checkout,我有一个小小的个人网站 为了学习新东西,我将git用于我的网站,我想创建一个bash脚本,该脚本将执行以下步骤: 识别最后一个标记版本 将此版本签出到特定于发行版的文件夹(因此不会删除我当前的工作) 缩小css文件 上传到我的ftp上 对于一个只有index.html和style.css的网站来说,这完全是过火了,但这只是为了学习一些新东西 我目前在第二步,这项工作相当不错,但我想让它更好一点 首先,让met解释树状图,它看起来像这样: / - scripts -- livraison
index.html
和style.css
的网站来说,这完全是过火了,但这只是为了学习一些新东西
我目前在第二步,这项工作相当不错,但我想让它更好一点
首先,让met解释树状图,它看起来像这样:
/
- scripts
-- livraison
- site
-- index.html
-- style.css
我的父文件夹中有两个子文件夹,脚本和站点。脚本不包含任何js脚本,我网站的所有源代码都在网站中。事实上,脚本确实包含我的bash脚本livraison,它将完成发布
因此,我只需签出站点
文件夹,并将其放入一个发布子文件夹,我将命名为站点_livraison
经过一番研究,我得出了以下结论:
#!/bin/bash
# Getting last tag version
dernierTag=$(git describe --tags `git rev-list --tags --max-count=1`)
echo 'Dernière version identifiée :' $dernierTag'.'
echo
# Emptying / Creating my release folder
echo 'Réinitialisation du répertoire "site_livraison".'
rm -Rf ../site_livraison
mkdir ../site_livraison
echo 'Réinitialisation du répertoire "site_livraison" terminée.'
echo
# Website source code checkout
echo 'Récupération de la version' $dernierTag' dans le répertoire "site_livraison".'
git --work-tree=../site_livraison checkout -f $dernierTag -- site
# Doing another checkout for going back to the master branch (if not I stay on my previous tag version and it mess up the git status command when I go back to developement)
git checkout -f master
echo 'Récupération de la version' $dernierTag' dans le répertoire "site_livraison" terminée.'
echo
我的问题是,在执行脚本后,我得到以下树视图:
/
- scripts
-- livraison
- site
-- index.html
-- style.css
- site_livraison
-- site
--- index.html
--- style.css
我想要这个:
/
- scripts
-- livraison
- site
-- index.html
-- style.css
- site_livraison
-- index.html
-- style.css
签出时是否有办法在git命令中执行此操作,或者我是否需要获取所有文件并使它们在我的树视图中“上升”,然后删除--site文件夹?一些解决方案可能是:
脚本
和站点
保存在各自的回购协议中,然后您可以独立签出每个脚本。回购协议中没有额外级别的目录可供使用脚本
和站点
分别进行1次回购,然后是一次包含的git
回购,将前两次视为一次回购site\u livraison
提取到同一棵树的外部,然后将mv
仅从该外部树中的site
子目录提取到您想要的位置。这棵树将不再是一个git
repo,但如果它只是为了临时目的,那么可能是无害的一些解决办法是:
脚本
和站点
保存在各自的回购协议中,然后您可以独立签出每个脚本。回购协议中没有额外级别的目录可供使用脚本
和站点
分别进行1次回购,然后是一次包含的git
回购,将前两次视为一次回购site\u livraison
提取到同一棵树的外部,然后将mv
仅从该外部树中的site
子目录提取到您想要的位置。这棵树将不再是一个git
repo,但如果它只是为了临时目的,那么可能是无害的首先:从2.5Git版本开始创建额外的工作树。在早期版本中,此工具的前身是contrib。你不需要用发布代码来搞乱你的工作回购然后:
git checkout
,那么,只需签出给定状态的源代码树即可。因此,如果需要移动内容,则需要在提交中更改到源树,或者,在签出后应用这些更改。git本身没有神奇的工具可以立即重写你的源代码树,你只能创建一个额外的脚本来完成。我的操作系统是Debian,Synaptic当前的git版本是2.1.4。我不能使用git worktree,必须使用git new workdir。谢谢你的帮助!首先:从2.5Git版本开始创建额外的工作树。在早期版本中,此工具的前身是contrib。你不需要用发布代码来搞乱你的工作回购然后:git checkout
,那么,只需签出给定状态的源代码树即可。因此,如果需要移动内容,则需要在提交中更改到源树,或者,在签出后应用这些更改。git本身没有神奇的工具可以立即重写你的源代码树,你只能创建一个额外的脚本来完成。我的操作系统是Debian,Synaptic当前的git版本是2.1.4。我不能使用git worktree,必须使用git new workdir。谢谢你的帮助!您好,我无法获取脚本存储库,因为命令是git--work tree=../site\u livraison checkout-f$dernierTag--site。--site
表明我只想签出站点存储库。感谢您的帮助。我成功地做到了您好,我无法获取脚本存储库,因为命令是git--work tree=../site\u livraison checkout-f$dernierTag--site。--site
表明我只想签出站点存储库。感谢您的帮助。我成功地做到了