我可以多次变基吗?
can I rebase more than once?
我将重新认识 git。我对变基不太熟悉,我想开始使用它。
与我合作的团队不允许提交到我们的 master 分支。我们必须创建一个功能分支,然后创建一个合并请求。
当我是唯一一个在功能分支上工作的人时,我想让我的功能分支与 master 保持同步,并且我希望在创建拉取之前在最后添加我的提交请求。
所以,我的计划是在我的功能分支上工作,并定期与(在?)master 一起变基。当我准备好提交拉取请求时,是否会将我的所有提交保留在更改历史记录的末尾?
是的,你可以多次变基。
变基后,您将获得一组新的提交。这些提交与所有其他提交完全一样,并且没有被重新定位的记录。
你需要注意的主要是rebase冲突的可能性。因为你更频繁地变基,你可能更频繁地遇到冲突,并且需要更频繁地解决它们。但只要你准备好应对它们,你应该没问题。
是的,您可以 rebase
多次。事实上,你想做的事情很常见,pull 命令有一个内置的标志:
git pull --rebase
将一个分支基于另一个 "re-applies"(这些天相当聪明)当前检出分支的提交在目标的顶端。
所以,是的,如果您一遍又一遍地这样做,那么您将使当前分支保持最新。我认为这是问题中的一个错字,但你不想 "rebase master" 虽然,你想 rebase on master.
有时,您可能会遇到很多冲突,在这种情况下,您可能应该考虑从这个特定点开始合并。变基时的冲突解决非常痛苦,因为您必须从第一次提交开始修复冲突:如果进一步提交修改同一段代码,您将执行的第一次合并将产生冲突,依此类推。通过合并,您可以一次修复所有这些问题。但是他们,一旦合并就必须继续合并。
看来你对流程的理解是正确的。我的团队的运作方式与您描述的类似,因为我们的团队领导更喜欢在单个(最好是小的)提交中进行所有相关更改。
在我完成对我的功能分支的更改后,我确保我的本地 master
与我们的上游分支匹配,然后 git rebase -i master
.
这使所有内容都与 master 保持同步,并且 -i
允许我审查我的所有提交 - 并根据我的团队领导的要求将它们压缩在一起。
就像你建议的那样,变基始终是我提出拉取请求之前的最后一步。
就变基而言,你想做多少次都可以。但是考虑到您的情况,在某些情况下,不断对 master 功能进行 rebase 可能会导致问题。
考虑一个场景,其中一些其他分支说“A”由于某种依赖性而被合并到你的功能分支。现在所有提交到这个合并分支的提交(比如 X 次提交)将被引入你的功能分支以及一个额外的合并提交。
现在,如果您尝试将您的功能分支与 master 变基,则变基将发生在合并分支 A 引入的所有 X 提交上。因此,在此操作期间有可能发生 X 次冲突。
但是,最好将 master 合并到您的功能分支中。在这种情况下,冲突只会发生一次,具体取决于您的功能分支和主分支的当前状态。
我将重新认识 git。我对变基不太熟悉,我想开始使用它。
与我合作的团队不允许提交到我们的 master 分支。我们必须创建一个功能分支,然后创建一个合并请求。
当我是唯一一个在功能分支上工作的人时,我想让我的功能分支与 master 保持同步,并且我希望在创建拉取之前在最后添加我的提交请求。
所以,我的计划是在我的功能分支上工作,并定期与(在?)master 一起变基。当我准备好提交拉取请求时,是否会将我的所有提交保留在更改历史记录的末尾?
是的,你可以多次变基。
变基后,您将获得一组新的提交。这些提交与所有其他提交完全一样,并且没有被重新定位的记录。
你需要注意的主要是rebase冲突的可能性。因为你更频繁地变基,你可能更频繁地遇到冲突,并且需要更频繁地解决它们。但只要你准备好应对它们,你应该没问题。
是的,您可以 rebase
多次。事实上,你想做的事情很常见,pull 命令有一个内置的标志:
git pull --rebase
将一个分支基于另一个 "re-applies"(这些天相当聪明)当前检出分支的提交在目标的顶端。
所以,是的,如果您一遍又一遍地这样做,那么您将使当前分支保持最新。我认为这是问题中的一个错字,但你不想 "rebase master" 虽然,你想 rebase on master.
有时,您可能会遇到很多冲突,在这种情况下,您可能应该考虑从这个特定点开始合并。变基时的冲突解决非常痛苦,因为您必须从第一次提交开始修复冲突:如果进一步提交修改同一段代码,您将执行的第一次合并将产生冲突,依此类推。通过合并,您可以一次修复所有这些问题。但是他们,一旦合并就必须继续合并。
看来你对流程的理解是正确的。我的团队的运作方式与您描述的类似,因为我们的团队领导更喜欢在单个(最好是小的)提交中进行所有相关更改。
在我完成对我的功能分支的更改后,我确保我的本地 master
与我们的上游分支匹配,然后 git rebase -i master
.
这使所有内容都与 master 保持同步,并且 -i
允许我审查我的所有提交 - 并根据我的团队领导的要求将它们压缩在一起。
就像你建议的那样,变基始终是我提出拉取请求之前的最后一步。
就变基而言,你想做多少次都可以。但是考虑到您的情况,在某些情况下,不断对 master 功能进行 rebase 可能会导致问题。
考虑一个场景,其中一些其他分支说“A”由于某种依赖性而被合并到你的功能分支。现在所有提交到这个合并分支的提交(比如 X 次提交)将被引入你的功能分支以及一个额外的合并提交。 现在,如果您尝试将您的功能分支与 master 变基,则变基将发生在合并分支 A 引入的所有 X 提交上。因此,在此操作期间有可能发生 X 次冲突。
但是,最好将 master 合并到您的功能分支中。在这种情况下,冲突只会发生一次,具体取决于您的功能分支和主分支的当前状态。