gpt4 book ai didi

git subtree 将更改推回子树项目

转载 作者:IT王子 更新时间:2023-10-29 00:55:31 27 4
gpt4 key购买 nike

下面的简短内容:我想将提交消息推送到子树,但只推送适用于该树的消息。我该怎么做?


我有两个项目,MasterSlaveSlave 作为 Master 的子树 check out 到 lib/slave 通过 git subtree merge --prefix=lib/slave --squash projects/slave 其中 projects/slaveSlave check out 到的分支:

分支机构:

大师项目/奴隶 → 奴隶

现在我正在我的 master 分支上工作,提交属于两个项目的文件,一切进展顺利。现在我想将更改推送回 Slave:

  • git checkout 奴隶
  • git merge ???硕士

如果我进行正常 merge ,每次提交到 master 时都会得到提交,无论 lib/slave 中的任何文件是否被修改。或者我可以执行 --squash 并且只获得一次提交,但我丢失了日志消息。

那么我如何获得适当的日志消息呢?例如如果我的 master 日志历史是:

  • 将图像添加到母版
  • 仅在slave中修改文件
  • 仅对 master 进行更多更改
  • 修改master和slave中的文件

我想把它添加到 Slave:

  • 仅在slave中修改文件
  • 修改master和slave中的文件

最佳答案

对于你想要的行为,我认为你必须从 Master 推送,我不知道有什么方法可以从 Slave pull 子树更改。

推送更改:

(in Master)
$ git subtree split --prefix=lib/slave -b split-branch
$ git push <bare Slave repo> split-branch:master
$ git branch -d split-branch
$ cd /path/to/Slave/working/copy
$ git pull # (now in Slave)

第一个命令根据目录创建一个新的子树,然后将其推送到另一个项目。

理论上,您应该能够直接推送到工作副本,但实际上这对我不起作用。

关于git subtree 将更改推回子树项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081681/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com