1

我知道我可以通过实验对此进行测试,但是进行讨论会很好。如果我有一个与远程 master 不同的本地负责人(本地分支)master,我倾向于git pull --rebase重播我的更改。我相信这可以通过稍微改变我当地分支机构的状态来实现。

但是,如果我已经从一个本地提交分支到一个新的分支实验(远程不存在),那么实验的历史/提交是否会被本地主分支上的变基更新?

一个类似的问题是,当我有两个本地分支 master 和 dev,都跟踪遥控器时。两者都有本地提交,我已经将一些本地提交从 master 合并到 dev 中。现在我 rebase master 以应用于远程之上——这会改变我已经合并到本地 dev 分支中的提交吗?我的本地开发分支现在是否会包含我现在在主分支中看到的(以前仅限远程)提交历史记录?

4

1 回答 1

1

本地主分支上的变基会更新实验的历史/提交吗?

答案是不。在 master 上执行正常git pull与执行这两个命令相同...(假设origin是远程,而您在master分支上)

git fetch
git merge origin/master

当您添加--rebase标志时,它会更改拉取以执行这两个命令......

git fetch
git rebase origin/master

如您所见,执行的变基是一个简单的变基,没有额外的引用。这是一个简写,git 假设当前分支作为第二个参数。当在 on 时以这种方式执行变基时master,假定这意味着......

git rebase origin/master master

以上可以从任何分支甚至无头状态执行,它仍然会产生与简单 using 相同的结果git rebase origin/master因为第二个参数是目标引用。引用文档...

git rebase master 
git rebase master topic

注意:后一种形式只是 git checkout topic 后跟 git rebase master 的简写。当 rebase 退出时,主题将保持签出分支。

显然,由于当前分支被假定为变基的目标,因此不会影响其他分支。

作为一般规则,git 不会对你的所有分支做任何事情。

你的第二个问题

不幸的是,我无法按照您的方案进行操作。我要求您将其分解为较小的问题,将其简化为您试图理解的核心。此外,您可能希望在您的场景中创建一个简单的提交历史文本图,类似于在这个问题上所做的。

我认为这是需要澄清的关键部分......

“现在我重新设置主控以应用于远程......”

我们需要了解您所说的“在上面”是什么意思。尝试向我们展示一系列 git 命令,尤其是最后的变基。

也就是说,我对以下问题的回答......

“我的本地开发分支现在是否会包含我现在在主分支中看到的(以前仅限远程)提交历史记录?”

……很可能是的。从任何地方变基到 master 后,您将看到 master 上的提交,这些提交过去只在您变基的地方。

于 2013-04-25T00:33:52.960 回答