Git:让一个分支完全像另一个分支

时间:2010-04-22 22:49:49

标签: git merge

我对Git比较陌生,而且我对它仍然不太满意。现在,我正在寻找可以使当前分支看起来像另一个分支的命令/选项/魔法;也就是说,要合并它们,但是当出现冲突时,要始终选择正在合并到当前分支中的分支中的差异。

因此我的情况;我在“master”分支上有一个稳定的(ish)应用程序。我还有另一个分支,称为“功能”。我基本上想要对功能进行更改/添加/删除,直到我喜欢我正在处理的新功能。一旦我觉得它准备就绪,我想让主分支看起来与功能分支相同。

我知道这可能不是最佳做法,但正如我所说,我是Git的新手。我打算在将来学习如何做更复杂的事情,但就目前而言,这就是我所需要的。

谢谢,SO!

4 个答案:

答案 0 :(得分:4)

抱歉!在回答之前没有完全阅读...

git checkout master
git merge feature

如果您对master进行了任何更改,这将毫不费力地工作,因为您将feature分开了。

你要做的就是分支和合并应该起作用的方式。在分支上开发您的功能,当您保持稳定并按照您希望的方式工作时,将其合并回主分支。

答案 1 :(得分:4)

我知道这是在前一段时间被问到的,而且已经有一些答案,但我想我会提供2美分:

如果您正在寻找git merge并且您不想担心合并冲突(总是更喜欢一个分支中的更改而不是另一个分支),那么您可以使用git merge branch -X ours和{ {1}}。对此有更多的解释 https://stackoverflow.com/questions/13594344

然而,我会争辩说,git merge branch -X theirs在这里会更有意义。 Rebase vs. Merge page上有一些优点/缺点。合并旨在保留发生的事件历史,包括合并本身,但从您的问题的声音看来,您似乎只是想要跟踪应用程序开发中的事件,隐藏您曾经拥有的事实首先是一个单独的分支。

答案 2 :(得分:3)

接受的答案("分支只是指针......")对我没有好处,因为我不仅需要我的分支看起来像另一个分支 - 我只需要这样做应用另一个提交(不丢失我分支当前历史记录中的任何提交)。

我喜欢这种方法让分支A看起来像分支B

git checkout B git diff A > patch_to_make_A_like_B git checkout A git apply patch_to_make_A_like_B

(最后rm patch_to_make_A_like_B。)

答案 3 :(得分:1)

分支只是提交图中的指针。您可以git-reset分支指向您喜欢的任何地方,只需确保在进行任何进一步提交之前签出预期的分支。