gpt4 book ai didi

git rebase - rebase 与 develop 和 origin/develop 之间的区别?

转载 作者:太空狗 更新时间:2023-10-29 14:00:45 27 4
gpt4 key购买 nike

这很奇怪。显然,针对我的本地 develop 分支和远程 develop 分支进行 rebase 之间存在一些差异。以下是一些详细信息:

假设我有一个特性分支,feat,我不时对其进行 rebase:

git pull --rebase origin develop

这工作正常。但现在我已经完成并准备压缩我的提交,我注意到两者之间存在很大差异:

git rebase -i origin develop

git rebase -i develop

前者为我的编辑器带来了 巨大 develop 的提交列表,其中没有一个是我对 feat 的更改。它还将我切换到 develop 分支。后者只显示我在 feat 上的提交,不会将我切换到本地 develop 分支。

git rebase -i origin develop 实际上是将我切换到我的本地 develop 然后 rebase 到远程吗?我应该 git checkout develop;首先是 git pull,然后是 git checkout feat; git rebase -i develop?

最佳答案

git rebase -i origin develop

不是用于 rebase 的正确语法.

git rebase -i develop
# or this, for the remote-tracking branch
git rebase -i origin/develop

是正确的语法。

official Linux Kernel Git documentation for git rebase 说这是一般语法(为清楚起见省略了一些选项):

git rebase [-i] [<upstream>] [<branch>]

哪里<upstream>是一个分支:

<upstream>

Upstream branch to compare against. May be any valid commit, not just an existing branch name. Defaults to the configured upstream for the current branch.

当您使用 git rebase -i origin develop 时, origin是您的 Remote 的名称,而不是分支。如果你想根据 origin/develop 进行 rebase ,您需要使用路径分隔符 / :

git rebase -i origin/develop

关于你的问题:

Is git rebase -i origin develop actually switching me to my local develop and then rebasing against the remote?

它可能正在切换到您的本地 develop ,但由于语法甚至无效,我不能 100% 确定。我之所以说可能是因为 rebase 的行为当您通过一个有效的上游分支并且另一个分支要在对第一个分支进行 rebase 之前检查第二个分支时:

If <branch> is specified, git rebase will perform an automatic git checkout <branch> before doing anything else. Otherwise it remains on the current branch.

最后,git rebase -i developgit rebase -i origin/develop 可能不同 如果您的本地 develop不是最新的与您的远程跟踪分支 origin/develop ,就像你 git fetch永远不要将更新 merge 到您的本地 develop .

关于git rebase - rebase 与 develop 和 origin/develop 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666170/

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