Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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工作流_Git_Merge_Workflow - Fatal编程技术网

每个分支上具有不同文件树的Git工作流

每个分支上具有不同文件树的Git工作流,git,merge,workflow,Git,Merge,Workflow,我有一些git回购,其中分支没有相同的文件树。例如: 开发分支:根目录上的src和dist文件夹 活动分支:根目录上的dist内容 目前,我找到的“最佳”工作流是(当我想将开发分支“合并”到live分支时): git实时签出(来自开发人员) git签出开发区/ git复位头* 复制/粘贴根目录上dist文件夹的内容并将其删除 git添加和提交 由于我不是git专家,我想知道是否有最好的方法来做到这一点 提前感谢您的回答:)您可以单独跟踪dist文件夹。与开发分支不同的是,您将有一个包含它

我有一些git回购,其中分支没有相同的文件树。例如:

  • 开发分支:根目录上的src和dist文件夹
  • 活动分支:根目录上的dist内容
目前,我找到的“最佳”工作流是(当我想将开发分支“合并”到live分支时):

  • git实时签出(来自开发人员)
  • git签出开发区/
  • git复位头*
  • 复制/粘贴根目录上dist文件夹的内容并将其删除
  • git添加和提交
由于我不是git专家,我想知道是否有最好的方法来做到这一点


提前感谢您的回答:)

您可以单独跟踪dist文件夹。与开发分支不同的是,您将有一个包含它的不同的repo,在live上,您只需要查看dist repo。

从“复制/粘贴根目录上dist文件夹的内容并删除它”中,我推测您不是在合并双方的更改,而是简单地更新到新版本。如果这是正确的

git checkout live
git read-tree -um HEAD: dev:dist     # fast-forward current tree to dev's dist
git rev-parse dev >.git/MERGE_HEAD   # tell porcelain this is a merge
git commit                           # record it
我会的。生成从第一个到第二个的快进合并,
-u
表示使用结果更新工作树。您将从签出树转到
dev
分支的当前
dist
树,这是从
dev
合并的正确结果,因此将其记录为合并是正确的

但由于你是快进的,结果将是新的树。这是一个以前被问过很多次的问题。我承认我最喜欢我的答案:

git commit-tree -p gh-pages -p master -m "" master:html \
| xargs git update-ref refs/heads/gh-pages

(根据口味更新名称),它只是直接执行需要执行的操作。

谢谢,我将查看git子模块。但我想我更愿意让我所有的分支机构都在同一个回购协议上,否则我的回购协议数量会翻倍…我看了git子模块,但我不确定是否理解你的建议?因为如果我理解得很好,我将有一个dist repo和一个dev repo(而不是分支)。在dev repo中,我将dist repo作为子模块包含在dist文件夹中?如果我这样做,我如何跟踪我在开发报告和地区报告方面的工作?可能重复的