2017-02-17 154 views
0

假设我在分支master上并运行git branch dev - 这将创建一个新分支。Git合并到分支中,自从分支变为

然后我做出一些改变分支dev

然后我做一些完全不同的变化分支master,但也有一些相同的文件

master -> (arbitrary # of commits) -> master* 
     \ 
     \___ dev -> (arbitrary # of commits) -> dev* 

现在我跑git merge

dev进行的更改将被添加到master

Q1)将会覆盖对master所做的更改吗?

Q2)如果对dev所做的更改与对master所做的更改所产生的文件相同,该怎么办?

Q2b)如果我想改变一个分支以优先考虑怎么办?

例如:test.jsmaster的第2-7行被更改,但在dev的第5-10行更改了它。

如果我希望master中的更改优先,该怎么办?也就是说,我想这merge忽略从dev

回答

1

所有更改test.js Git合并完全按照它说。它会合并您的更改。

$ git checkout master $ git merge dev

这将合并从开发的所有更改成高手。根据合并的严重程度,它将创建一个单独的合并提交(您将必须逐步完成该提交并写入提交消息)。

  • 如果您在两个分支中修改相同的行(或相同的关键部分),则会发生合并冲突(如果您启动恐慌,则会出现git merge --abort)。
  • 如果修改了相同的文件,但不一样的线,它只会将更改合并在一起

这就是为什么一个测试套件是很重要的一个很好的例子。这是查看合并时间变差的快速方法,因为您的测试可能因错误合并而失败。

documentation for git merge也有很好的例子。