我对Git比较陌生,而且我对它仍然不太满意。现在,我正在寻找可以使当前分支看起来像另一个分支的命令/选项/魔法;也就是说,要合并它们,但是当出现冲突时,要始终选择正在合并到当前分支中的分支中的差异。
因此我的情况;我在“master”分支上有一个稳定的(ish)应用程序。我还有另一个分支,称为“功能”。我基本上想要对功能进行更改/添加/删除,直到我喜欢我正在处理的新功能。一旦我觉得它准备就绪,我想让主分支看起来与功能分支相同。
我知道这可能不是最佳做法,但正如我所说,我是Git的新手。我打算在将来学习如何做更复杂的事情,但就目前而言,这就是我所需要的。
谢谢,SO!
答案 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
分支指向您喜欢的任何地方,只需确保在进行任何进一步提交之前签出预期的分支。