2010-04-22 232 views
2

我对Git比较陌生,而且我对它还不是很满意。现在,我正在寻找可以使当前分支看起来像另一个分支的命令/选项/魔法;即合并它们,但是当发生冲突时,总是选择合并到当前分支中的分支中的差异。Git:使一个分支完全像另一个分支

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

我知道这可能不是最佳实践,但正如我所说,我是Git的新手。我计划在未来学习如何做更复杂的事情,但现在,这就是我所需要的。

谢谢,所以!

+0

[用于制造像另外一个分支的git命令]的可能的复制(HTTP://计算器。com/questions/4911794/git-command-for-making-one-branch-like-another) – 2015-10-26 21:26:03

回答

2

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

+0

换句话说,我找到了我在功能分支上进行的最后一次提交的提交ID,切换到主分支,并对该提交ID执行git reset --hard,使得HEAD与特性分支相同内容?那会发生什么? – 2010-04-23 14:11:47

+0

是的。我应该强调,这只是一个方法;在许多情况下,您最好使用从功能分支合并到您的主服务器的“传统”工作流程。我会补充说git中的合并很聪明;他们不像CVS和SVN下的事情。 – crazyscot 2010-04-23 22:26:50

4

对不起!通过回答之前没有看完呢......

git checkout master 
git merge feature 

因为你支feature关闭呢?这将毫不费力地工作,如果你还没有做出任何更改master

你正在试图做的就是分支和合并应该工作的方式。在分支上开发您的功能,当您拥有稳定的功能并像您希望的那样工作时,将其合并回主分支。

+0

如果我对可能导致冲突的主进行更改,该怎么办?我想我应该提到这种可能性,因为我可能需要对小事做出改变。 – 2010-04-22 22:56:05

+0

@G。马丁AFAIK应该没有问题。在功能分支上执行'git checkout master'会出现任何合并问题。一旦你解决了master分支上的'git merge feature'应该没有任何问题。 – 2010-04-22 23:56:28

3

我知道这是前一段时间要求,并有几个答案了,但我想我会提供我的2美分:如果你希望做一个git merge

,你不希望担心合并冲突(总是喜欢一个分支上的更改),那么您可以使用git merge branch -X oursgit merge branch -X theirs。有关于此的更多解释请参见 https://stackoverflow.com/questions/13594344

但是,我认为git rebase会更有意义。一些优点/缺点在Rebase vs. Merge page。合并意在保留发生的事件的历史记录,包括合并本身,但从您的问题的声音看来,您似乎只想跟踪应用程序开发中的事件,隐藏了您曾经拥有过的事实首先是一个单独的分支。

0

接受的答案(“分支只是指针......”)对我来说并不好,因为我不仅需要我的分支看起来像另一个分支 - 我只需要应用另一个提交(不是在我的分支目前的历史中失去了任何提交)。

我喜欢这种方法制造分公司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末。)

相关问题