我正在尝试将master重新设置为dev:
git rebase master
然后我得到:当前分支是最新的。
然而,当我检查两个分支之间的差异时,我会发生冲突。为什么git没有说出检测到冲突之类的东西?
另请参阅此处了解代码sample
答案 0 :(得分:0)
如果您的目的是将分支 dev 合并到 master 中,从而只显示带有单个注释的一次提交,则需要添加--interactive选项。
因此,您从 dev 分支运行的命令变为:
git rebase master --interactive
通过这种方式,您可以压缩要隐藏的提交。
例如,当您找回此代码时:
pick 01d1124 Adding the book add function
pick 6340aaa Creating the unit test for book add function
pick ebfd367 Now the function is finished
# Rebase 60709da..30e0ccb onto 60709da
#
# Commands:
# p, pick = use commit
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
您可以这样修改代码:
pick 01d1124 Adding the book delete function
squash 6340aaa Creating the unit test for book add function
squash ebfd367 Now the function is finished
然后,在要隐藏的所有注释之前加上#号。
# This is a combination of 4 commits.
# The first commit's message is:
Adding the book delete function
# This is the 2nd commit message:
# Creating the unit test for book add function
# This is the 3rd commit message:
# Now the function is finished
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Explicit paths specified without -i nor -o; assuming --only paths...
# Not currently on any branch.
然后您结帐 master ,然后
git merge dev
通过这种方式,您只需一次提交即可将分支开发合并到master中。
为什么会收到“当前分支是最新的”消息。?
您使用git rebase想要在 dev 之后立即使用分支 master 上已完成的提交更新分支 dev 。 >已从master实例化。
在分支* dev **上时,您将执行以下操作:
git rebase master
如果那之后您没有对master执行任何新的提交,则会收到以下消息:
“当前分支是最新的。”
这是因为在较低级别上,rebase实际要做的是一个接一个地抽取在master分支上完成的新提交,并将它们重新附加到dev的最后一次提交。
因此,如果您不压缩任何提交,则该命令将无用。
我发现本文包含的图像对于理解该机制非常有用: https://hackernoon.com/git-merge-vs-rebase-whats-the-diff-76413c117333
答案 1 :(得分:-1)
我无法对您的问题发表评论,因此这可能无法回答您的所有问题。
1)您的rebase命令按预期工作。你在一个dev分支上,它在master之上有一个提交。它已经是最新的,没有什么可以在那里重新定位。
2)不太确定你的意思是说你看到两个分支之间的冲突。但是,我假设您可能希望将更改从dev部署到master分支。如果是,请执行以下步骤:
git checkout master // Switch the current branch to master
git merge dev // Merge the dev branch to master (it will be just fast-forward)
git push origin master // Push to origin
现在master和dev分支应该保持同一个提交。