将开发分支合并回master时,所有提交都会丢失

时间:2016-06-24 18:43:27

标签: git atlassian-sourcetree

我有一个名为" feature / multientity"那是从大师那里分出来的。完成工作后,我将功能分支合并到一个名为" staging-multientity-merge"的临时分支中。那也是从大师那里分出来的。我解决了合并冲突,然后我将staging分支合并回master。但是,我在" feature / multientity"中所做的所有提交都是没有合并。只有一个提交,即我修复合并冲突的提交,被合并。所以现在,即使代码是最新的,任何未来的合并来自" feature / multientity" to master会发生合并冲突,因为没有任何提交被转移。有没有人遇到过这个问题?我使用SourceTree作为我的版本控制工具。

2 个答案:

答案 0 :(得分:1)

我遇到了您描述的问题,我使用SourceTree作为可视化工具。我通过在合并之前重置为状态并正确合并来解决问题。我显然尝试将两个分支合并到master,我应该首先将功能分支合并到staging分支。如果分支名称不重要,就会发生这种情况。

在将所有更改合并到master之前,您可以尝试以下步骤将功能分支更改合并到暂存分支:

  1. 结帐功能/多样性
  2. 重置功能/多样性以在合并提交之前进行说明,例如使用git log --stat在合并提交之前找到提交哈希。使用git reset --hard commit_hash_here

  3. 重复暂存分支,将 staging-multientity-merge 重置为合并提交前的状态

  4. 现在git checkout staging-multientity-merge首先使用命令git merge feature/multientity,只有在签出分段后才能使用git status。这将带来从功能/多样性到暂存分支的更改。

  5. 使用git commit -m "Your merge conflict resolution message here."监控合并的状态,并修复任何合并冲突。使用git checkout master进行提交现在您的临时分支已准备好合并到主服务器。

  6. 接下来,使用git merge staging-multientity-merge,这是我忘记的事情,并使用AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", config.FilePath); 完成工作。在SourceTree提交视图(左下角)中使用创建新提交,即使可以快进选项,这将使得多个分支不会指向SourceTree提交视图中的单个提交。在我看来,在这里使用no-fast-forward确实在SourceTree提交历史记录视图中创建了一个视觉上更令人满意的Outlook。
  7. 使用这种方法,重置分支可能会强制您强制推送更改到远程存储库,但如果您没有将不成功的合并推送到远程存储库,则不需要它。

    虽然我遇到了合并失败的问题,但我很难解释有关每个分支的SourceTree工具视觉效果。颜色是任意的,只是帮助您可视化提交的父子关系。请参阅Atlassian Community answer about what SourceTree tool branch colour visuals represent以了解有关SourceTree的更多信息。

答案 1 :(得分:0)

没有意义。当你将合并提交看成staging-multientity-merge时,你会看到你对feature / multientity的更改吗?如果是这样,他们就在那里。如果没有,你是否在合并冲突解决期间陷入困境并且不包括它们或者没有完成与git add / rm的合并然后git commit?合并提交到master中也是一样。