如何比较两个 Git 分支并仅列出 feature/topic (第二个)分支中的新提交

How can I compare two Git branches and only list the new commits in the feature/topic (second) branch

我已经执行了以下步骤,但是当我将 develop 分支与 feature 分支进行比较时,我看到了两条提交消息,而不是我希望看到的只有 1 条提交消息。一个是已经在 develop 中的先前提交,另一个是我在 feature 分支中所做的最新提交。

  1. 我已经从远程分支
  2. 拉取并合并了本地 develop 分支
  3. 然后在 develop
  4. 的基础上创建了一个新分支
  5. feature 分支
  6. 中进行了更改并添加了这些文件和 git commit -m "latest changes"
  7. 执行git pushfeature分支推送到远程分支
  8. 当我将 developfeature 进行比较时,我看到了两个提交而不是一个(我在 feature 分支中创建的那个)

为什么会发生这种情况,我该如何解决这个问题?

回答你的问题:你可以通过执行git log <parent_branch_name>..<your_feature_branch_name>看到两个分支之间的区别,例如git log develop..feature.

关于你的情况: 据我所知,这种行为最可能的原因是在你的本地仓库中合并开发分支。如果在合并过程中(fyi pull 操作是组合 fetch 和 merge),merge 没有像 fast-forward 那样处理,那么你得到了 develop 分支的另一个状态,这里可能是 merge commit,你可以比较提交哈希。

为了防止这种情况,你应该使用git pull --rebase命令来拉取一些本地分支。

如果您想在将本地功能分支推送到远程服务器之前获得最新更改,您还可以在您的功能分支上 运行 git pull --rebase origin develop,然后提交的树看起来就像您刚刚创建的一样你的功能分支来自 develop 并在父分支提交后将所有创建的提交放在功能分支上。

希望对您有所帮助!