Git 如何将未跟踪目录的内容合并到其他分支的根目录

Git 如何将未跟踪目录的内容合并到其他分支的根目录,git,github,merge,github-pages,Git,Github,Merge,Github Pages,对于我的GitHub页面,我使用静态站点生成器。站点的源代码位于分支中,它在\u站点目录中生成html文件。 分支用于显示实际的网站,应该包含根级别生成的html文件 由于我不希望\u站点目录及其内容成为我的分支的一部分,因此我忽略了\u站点目录(通过将\u站点放在我的.gitignore中) 现在我的问题是如何将分支的\u站点目录中未跟踪的内容合并到分支的根目录中 更新 主要的问题似乎是Git需要您想要合并的任何东西来跟踪(这是理所当然的),但我不想跟踪我的分支中生成的文件。 我能想出的唯一解

对于我的GitHub页面,我使用静态站点生成器。站点的源代码位于
分支中,它在
\u站点
目录中生成html文件。
分支用于显示实际的网站,应该包含根级别生成的html文件

由于我不希望
\u站点
目录及其内容成为我的
分支的一部分,因此我忽略了
\u站点
目录(通过将
\u站点
放在我的
.gitignore
中)

现在我的问题是如何将
分支的
\u站点
目录中未跟踪的内容合并到
分支的根目录中

更新
主要的问题似乎是Git需要您想要合并的任何东西来跟踪(这是理所当然的),但我不想跟踪我的
分支中生成的文件。
我能想出的唯一解决办法是至少使用一个临时分支,以后可以删除。使用git子树从一个临时分支拆分为另一个临时分支似乎是最干净的选择

有没有更好/更干净的方法

这就是我想到的:

# Checkout branch <temp1> carrying over the current working
# directory including ignored/untracked files
git checkout -b temp1

# Add _site to staging ignoring .gitignore and commit
git add -f _site/
git commit -m "irrelevant commitmessage"

# Subtree split _site to <temp2> branch (root of branch)
git subtree --prefix=_site/ split -b temp2

# Checkout master and merge <temp2>
git checkout master
git merge --squash temp2
git commit -m "commitmessage"

# Remove <temp1> and <temp2> branches and push
#结转当前工作的签出分支
#包含被忽略/未跟踪文件的目录
git签出-b temp1
#将_站点添加到staging ignore.gitinore并提交
git add-f_站点/
git提交-m“无关提交消息”
#子树拆分_站点到分支(分支根)
git子树——前缀=_site/split-b temp2
#签出主控和合并
切换到主分支
git合并--挤压速度2
git commit-m“commitmessage”
#拆下并推下分支

如果有更好的解决方案,我会欢迎他们,但考虑到您想要进行某种合并,而这实际上不是一种合并,我只能建议您创建一个post-commit脚本或一个bash/perl/python脚本来执行以下操作:

  • 如果不在“源”分支上(可能是任何条件),请退出
  • 创建另一个类似temp001的分支
  • 在那个分支上复制所有内容
  • 从_站点复制到根目录
  • 签出主合并temp001
  • 退出(我的建议)
  • 现在确认更改并提交/推送。你可以在最后一步这样做,但我不会在第一次试跑时这样做


    这是我所能建议的最好方法。

    一个简单的方法,可以是
    签出主机
    ,因为该分支机构不会有.gitignore条目,它会将站点下所有更改的文件显示为新文件或新更改。你能试试吗?这不是合并,但可能会起作用。@bitoiu这是将未老化/未跟踪的文件移到另一个分支的最简单方法,但它们保留在原始位置(即
    文件夹),而不是分支的根目录中。由于我只想将生成的文件合并到
    分支(以保持站点“已发布”版本之间的更改/差异),因此我需要找到一种方法,将文件从
    \u site
    获取到分支的根目录,并仅将这些文件添加到提交。使用脚本的可能重复(提交后或推送后)这是个好建议,我一定会这么做。关于实际合并,请参阅我的问题编辑,您认为我当前使用分支和git子树拆分的解决方案如何?不是评论子树的最佳人选。我在使用子模块方面有过不太好的经验,以后再也没有了。老实说,我不确定您是否能在git中找到针对特定问题的内置解决方案。保留此文件,如果不方便,请将其更改。