源分支比目标分支落后两个提交。

3

在IntelliJ中,我从一个名为stage的远程分支上创建了一个新的分支。 我的分支名叫PM-43655-stage。 我提交了我的更改并执行了git push -u origin PM-43655-stage。它创建了一个合并请求到stage分支。现在它显示源分支比目标分支落后2个提交。

虽然没有合并冲突。

我对git pullgit fetch之间的区别感到困惑,并不确定在这种情况下该怎么做。


2
这是一个非常好的、易于理解的资源,可以学习git的基础知识: https://www.atlassian.com/git/tutorials/syncing (请查看整个“协作”部分) - msanford
这个回答解决了你的问题吗?我该怎么解决“1 commit behind master”的问题? - pkamb
是的,我的意思是有多种方法可以解决这个问题。我想尝试使用git pull来解决这个问题。 - Aditya K
1个回答

10
这条消息是指你尝试合并到的分支(在这种情况下是“stage”)自你创建MR以来已经有了更新。如果没有合并冲突,它仍然可以合并,但在合并之前将其更新到最新状态通常是一个好习惯,这样你可以确保CI在实际要合并的代码上运行。
你可以使用git pull命令完成此操作,它既可以获取远程更改,也可以应用它们。但我个人更喜欢拥有更多的控制,并重新基于当前分支进行变基,以便在必要时解决冲突。
git fetch origin
git rebase origin/stage

完成后,您需要推送更新的分支:

git push --force origin PM-43655-stage

编辑:
关于评论中提出的你不想提交的本地更改问题,最简单的方法可能是将它们储藏起来-也就是在拉取和推送时将它们放在一边,然后再恢复它们:

# Put your local changes aside
git stash save

# Pull the stage branch
git pull origin stage

# Push the updated branch
git push --force origin PM-43655-stage

# Retrieve the uncommited changes and go back to work
git stash pop

1
是的,我记得尝试过git pull。假设我在本地分支PM-43655-stage中,在这个分支上应该执行git pull origin stage(即目标分支),对吗? - Aditya K
@AdityaK 是的,确实如此。 - Mureinik
我在本地有一些未提交的更改,不想进行更改、提交和推送。我尝试使用 git pull origin stage 命令,但出现以下错误:你的本地更改将会被合并覆盖以下文件:src/main/resources/logback.xml。 - Aditya K
我希望我的本地更改保持不变。如果我提交它们并执行git pull,这些更改也会被推送对吗? - Aditya K
@AdityaK 我认为将它们藏起来更容易。我已经在我的答案中编辑了详细信息,请查看(在评论中描述这有点不方便)。 - Mureinik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接