对于我的GitHub页面,我使用静态站点生成器。该站点的源代码位于<source>
分支中,它在_site
目录中生成html文件。
<master>
分支用于显示实际网站,并应包含根级别生成的html文件。
由于我不希望_site
目录及其内容成为我的<source>
分支的一部分,因此我忽略了_site
目录(将_site
放入我的.gitignore
)。
现在我的问题是如何将_site
分支的<source>
目录的未跟踪内容合并到<master>
分支的根目录?
更新
主要的问题似乎是Git需要你想要合并的任何东西被跟踪(理所当然;)),但我不想跟踪<source>
分支中生成的文件。
我可以提出的唯一解决方法是使用至少一个可以在之后删除的临时分支。使用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
答案 0 :(得分:0)
如果对这个问题有更好的解决方案,我会欢迎他们,但鉴于你想要进行一种合并,这实际上不是一个,我只能建议你创建一个post-commit脚本或bash /执行以下操作的perl / python脚本:
现在确认您的更改并提交/推送。您可以在最后一步执行此操作,但在第一次尝试运行时我不会这样做。
这是我能提出的最佳建议。