git merge不会更改任何内容,而git log显示合并历史记录

时间:2019-03-18 19:59:12

标签: git github git-merge

我在A分支上工作,而其他开发人员在B分支上工作。

我想将B分支中的所有内容都拉到A分支。我已经在本地克隆了这两个分支。

我在阅读某则SO帖子时做了什么:

git checkout branch B
git pull 
git checkout branch A
git merge branch B

合并消息如下:

Auto-merging fileBar
Merge made by the 'recursive' strategy.
 .../file               | 92 ++++++++++++++++++----
 file1     |  9 ++-
 .../file2          |  2 +-
 .../file3                       |  6 +-
 .../file4                     |  4 +-
 .../file5              |  2 +-
 file6   |  2 +-
 .../file7               |  4 +-
 8 files changed, 91 insertions(+), 30 deletions(-)

但是,我原本希望解决一些合并冲突,但令我惊讶的是git没有为此大吼大叫。

所以我在这之后做了什么:

git status

这表明我本地没有任何变化,很奇怪吗?

然后我做了:

git log

其中显示:

Author: me <me@gmail.com>
Date:   Mon Mar 18 14:47:00 2019 -0400

Merge branch 'B' into A

我还在分支A上尝试拉分支B:

git pull origin branchB

但它说它是最新的:

From https://github.com/myGit/myRepo
 * branch              BranchB -> FETCH_HEAD
Already up to date.

但是,当我登录到Git时,那些存储库在远程上显然是不同的。

在这一点上,我感到困惑。这里发生了什么?如何将分支B拉入分支A?

更新:我刚发现这样做的时候:

git checkout branch B
git pull

实际上未提取新的更改。当我做git pull时,它说它已经是最新的了,而显然不是。我的本地仍然有分支B的旧版本。如何?此时我对一切感到困惑

我尝试过的事情:

git fetch --all
git reset --hard origin/BranchB

这些都不起作用

1 个答案:

答案 0 :(得分:0)

似乎一切正常。

git checkout branch B
git pull 
git checkout branch A
git merge branch B

运行上述操作后,AB合并了(您已通过git loggit pull origin branchB进行了确认)。

git status正确显示工作树中没有暂存/未暂存的更改,所有更改都通过合并提交。

没有冲突的事实有点more complicated。您可能需要查看处理branches that depend on each other的方法。使用分支的最简单方法是在不相互依赖的孤立的“功能分支”上工作。准备就绪后,可以将分支合并到master中,然后将master拉到其他分支中以使它们保持最新。

在您git push之前,不会更新远程分支机构(在GitHub上),这似乎还没有完成。

此外,您现在似乎已将A重置为与Bgit reset --hard origin/BranchB)相同,并可能丢失了您在A上所做的任何工作。为了解决这个问题,请使用git reflog查看您最近操作的历史记录,然后执行git reset --hard $REFLOG_HASH,其中HASH是您进行合并的操作左侧的数字-这样您就可以{ {1}}您的工作树可以追溯到历史。然后,您可以使用reset更新遥控器。