我知道我可以通过实验测试,但讨论会很好。如果我有一个本地头(本地分支)主服务器与远程主服务器不同,我倾向于执行git pull --rebase
重播我的更改。我相信这可以通过稍微改变我当地分支的状态来实现。
但是,如果我从其中一个本地提交分支到一个新的分支实验(远程不存在),那么实验的历史/提交是否会被本地主分支上的rebase更新?
类似的问题是当我有两个本地分支的master和dev时,都跟踪遥控器。两者都有本地提交,我将一些本地提交从master合并到dev中。现在我将master重新设置为应用于远程顶部 - 这是否会更改我已合并到本地dev分支的提交?我的本地开发分支现在是否包含我现在在主分支中看到的(以前只有远程)提交历史记录?
答案 0 :(得分:1)
答案是否定的。在master上执行正常git pull
与执行这两个命令相同...(假设origin
是远程,而您在master
分支上)
git fetch
git merge origin/master
当您添加--rebase
标志时,它会更改拉力以执行这两个命令......
git fetch
git rebase origin/master
正如您所看到的,执行的rebase是一个简单的rebase,没有其他引用。这是一个简写,git假定当前分支为第二个参数。当在master
上以这种方式执行rebase时,假设这意味着......
git rebase origin/master master
以上内容可以从任何分支甚至是无头状态执行,并且仍然会导致与使用git rebase origin/master
, 的简单相同,因为第二个参数是目标引用 即可。引用documentation ...
git rebase master
git rebase master topic
注意:后一种形式只是git checkout主题的简写 然后是git rebase master。当rebase退出主题仍然是 签出分支。
显然,由于当前分支被认为是rebase的目标,因此不会影响其他分支。
作为一般规则,git不会对你的所有分支做任何事情。
不幸的是,我在跟踪您的情况时遇到了麻烦。我要求你把它分解成更小的问题,把它简化为你试图理解的核心。此外,您可能希望在方案中创建一个简单的提交历史记录文本图表,类似于this question上的提交历史记录。
我认为这是需要澄清的关键部分......
“现在我将主要用于在遥控器顶部应用......”
我们需要通过“在...之上”来理解你的意思。尝试向我们展示一系列git命令,特别是这个最终的rebase。
那就是说,我对以下内容的回答......
“我的本地开发分支现在是否包含我现在在主分支中看到的(以前只有远程)提交历史记录?”
......可能是肯定的。从任何地方变为主人之后,您将看到主人的提交,这些提交过去只在您重新定位的地方。