我正在重新引入git。我不熟悉变基,我想开始使用它。
我正在与之合作的团队不允许提交进入我们的主分支机构。我们必须创建一个功能分支,然后创建一个Pull Request。
当我是唯一一个在功能分支上工作的人时,我想让我的功能分支与master保持同步,并且我希望在创建pull请求之前最后提交我的提交。
所以,我的计划是在我的功能分支上工作,并定期使用(on?)master修改。当我准备提交拉取请求时,是否会在更改历史记录结束时保留所有提交内容?
答案 0 :(得分:1)
是的,你可以不止一次变装。
在变基之后,你会得到一组新的提交。这些提交与所有其他提交完全一样,并且没有记录已经被重新命名的记录。
你需要注意的主要事情是rebase冲突的可能性。由于您经常更新,您可能会更频繁地发生冲突,并且需要更频繁地解决冲突。但只要你准备好处理它们,你应该没事。
答案 1 :(得分:1)
是的,你可以根据需要rebase
多次。实际上,你想要做的是如此常见,pull命令有一个内置标志:
git pull --rebase
答案 2 :(得分:1)
在另一个分支上重新分支"重新应用" (现在相当聪明地)当前检出的分支的提交位于目标的顶端。
所以,是的,如果你一遍又一遍地做,那么你将保持你当前的分支是最新的。我认为这是一个问题的错字,但你不想" rebase master"但是,你想在主
上重新。有时候,你可能会遇到很多冲突,在这种情况下你可能应该考虑从这个特定的角度进行合并。因为必须从第一次提交开始修复冲突,所以在重新定位时解决冲突非常困难:如果进一步提交修改同一段代码,那么你将要做的第一次合并将产生冲突,依此类推。通过合并,您可以立即修复所有这些内容。但是,一旦你合并,你就必须继续合并。
答案 3 :(得分:1)
您似乎对该过程有正确的理解。我的团队的运作方式与您描述的相似,因为我们的团队负责人更喜欢在一个(最好是小的)提交中进行所有相关更改。
在我的功能分支上完成更改后,我确保我的本地master
匹配我们的上游分支,然后git rebase -i master
。
这使得所有内容都与主人保持同步,-i
允许我查看我的所有提交 - 并根据我的团队负责人的要求将它们压缩在一起。
就像你建议的那样,在提出拉取请求之前,变基始终是我的最后一步。
答案 4 :(得分:1)
就变基而言,您可以根据需要进行任意次数。但考虑到你的情况,在某些情况下不断地重新调整功能可能会导致问题。
考虑一个场景,其他一些分支说'A"由于某些依赖性而被合并到您的功能分支。现在,所有提交到此合并分支的提交(比如X提交数)将在您的功能分支中引入,以及一个额外的合并提交。 现在,如果您尝试使用master重新绑定功能分支,则将通过合并分支A引入的所有X提交进行重定位。因此,在此操作期间可能会发生X次冲突。
但是,将master合并到您的功能分支中会更好。在这种情况下,冲突只能发生一次,具体取决于功能分支和主分支的当前雕像。