按文件强制合并文件 - git

时间:2013-03-06 11:10:50

标签: php git git-merge

我刚刚合并了两个分支'branch1'和'branch2'。问题是它现在是一个混乱的很多冲突,有时有重复的内容(是否可能?)。

我想要做的是强制将'branch1'中的某些文件与'branch2'合并,相反强制来自'branch2'的某些文件与'branch1'合并,知道我现在在'branch1' ”。有可能吗?

更新:git-merge似乎有问题?假设我保留branch1版本,然后

echo $this->fetch('prehome.html');
        die; 

会出现两次,见:

protected function prehomepage()
    {
        $var = 'myvar';

        echo $this->fetch('prehome.html');
        die;
    }

<<<<<<< HEAD
    $this->mySmarty->assign('title', 'Primagora');

    echo $this->fetch('prehome.html');
    die;
  }

  /**
   * Generate the campaign block for the general sidebar, called through AJAX.
   */
  protected function getCampaignBlock()
  {
    $from = Utils::fromGet('from');
    echo $this->getCampaignSidebarBlock($from);
    die();
  }
=======
    /**
     * Generate the campaign block for the general sidebar, called through AJAX.
     */
    protected function getCampaignBlock()
    {
        $from = Utils::fromGet('from');
        echo $this->getCampaignSidebarBlock($from);
        die();
    }
>>>>>>> branch2

3 个答案:

答案 0 :(得分:1)

在合并冲突时(如果设置了git config merge.conflictstyle diff3),您可以:

  • 忽略该合并并保留原始版本(来自branch1):
git show :2:full_path > file
# or 
git checkout-index --stage=2 -- file
  • 忽略该合并并保留其他版本(来自branch2):
git show :3:full_path > file
# or 
git checkout-index --stage=3 -- file

从那里git addgit commit

答案 1 :(得分:0)

您应该始终尝试解决冲突。他们会告诉你很多事情。

Netbeans可以使用git,这使得解决冲突成为一项相当简单的任务。您可以逐个解决冲突,选择您想要保留的版本。

重复内容是什么意思?如果在两个文件中它们都相同,则不可能将标记为更改的内容。

答案 2 :(得分:0)

您正在显示的文件是正在进行的git merge whit冲突中的中间文件。来自

的行
<<<<<<< HEAD

=======

是一个版本,来自

========

>>>>>branch1

是另一个。然后,您可以手动编辑文件并选择要使用的版本或运行工具来帮助您解决冲突。 git命令mergetool将指导您解决所有冲突 https://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html

git mergetool

git mergetool很可能必须配置为使用您最喜欢的冲突解决方案。我发现meld非常有帮助和直观。

Git mergetool with Meld on WindowsHow to set Meld as git mergetool