git - Git 中的部分子树上游推送

标签 git git-subtree

我在 Git 中遇到了一种情况,其中我有一个核心存储库,它通过 Git 子树与其他存储库共享/使用。在 repo “项目”中,我有子树 repo “核心”,在该核心中我进行了各种提交,此后我已提交并推送到“项目”。我现在想将“core”文件夹中的这些更改推送到实际的“core”存储库。这通常可以通过以下方式完成:

git 子树推送 --prefix=/core/core-repo master

但是,“核心”文件夹中恰好有一个提交,我想将其保留在“项目”本地。一种廉价的黑客方法是将所有内容推向上游,然后恢复该提交。我想知道是否有更合适的方法来阻止这些特定的变化向上游发展。谢谢。

最佳答案

通常您可以使用以下命令推送到特定提交:

git push <remotename> <commit SHA>:<remotebranchname>

这会将指定(包括)之前的所有提交推送到远程分支。

您应该能够(但我还没有测试过)通过子树推送来做到这一点。像这样的东西:

git subtree push --prefix=/core/ core-repo <commit SHA>:master

就您而言<commit SHA>应该是您想要避免推送的提交之前的提交。
请注意,如果您不想推送的提交后面有提交,则必须使用 git rebase 对提交重新排序。 .

关于git - Git 中的部分子树上游推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082195/

相关文章:

git - 如果我在本地有 10 个分支,如何将它们推送到远程源服务器?

git - 如何使用 git subtree 添加本地 repo?

git - 加入同一存储库旧版本的历史记录

git - 如何删除以前添加的 git 子树及其历史记录

GIT,在正确的分支中进行更改

git - 你如何使用 git-cache-meta?

python - 使用requirements.txt将可编辑工作目录pip安装到自定义路径

git-过滤器分支 : leave directory structure unchanged

git - 将 git 存储库中的文件夹拆分为单独的分支

git - 将 Git 子模块转换为子树