Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git with Bash:导出子目录而不获取父文件夹_Git_Bash_Release_Git Checkout - Fatal编程技术网

Git with 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

我有一个小小的个人网站

为了学习新东西,我将git用于我的网站,我想创建一个bash脚本,该脚本将执行以下步骤:

  • 识别最后一个标记版本
  • 将此版本签出到特定于发行版的文件夹(因此不会删除我当前的工作)
  • 缩小css文件
  • 上传到我的ftp上
  • 对于一个只有
    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的另一个变化是使用3个回购协议。对于
    脚本
    站点
    分别进行1次回购,然后是一次包含的
    git
    回购,将前两次视为一次回购
  • 将您的工作
    site\u livraison
    提取到同一棵树的外部,然后将
    mv
    仅从该外部树中的
    site
    子目录提取到您想要的位置。这棵树将不再是一个
    git
    repo,但如果它只是为了临时目的,那么可能是无害的

  • 一些解决办法是:

  • 将项目拆分为多个回购协议。将您的
    脚本
    站点
    保存在各自的回购协议中,然后您可以独立签出每个脚本。回购协议中没有额外级别的目录可供使用
  • #1的另一个变化是使用3个回购协议。对于
    脚本
    站点
    分别进行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
    表明我只想签出站点存储库。感谢您的帮助。我成功地做到了