2014-09-24 94 views
24

我创建了一个分支来尝试一种不同的方法,并且它工作,所以我想将“Farmcrops”分支合并到“Master”中以保留这些更改,但继续“Farmcrops”分支以探索另一种可能性。这样,如果这个最新的变化不起作用,我可以回到“主”,这将包括第一轮变更。如何将分支合并到主分支中,但继续在分支上工作?

我该怎么做?

+0

新的探索仍然基于我对cropcarms改变农作物,所以我继续使用该分支是有意义的,但如果它更容易在git中合并和分支,我可以做到这一点。 – jgravois 2014-09-24 19:21:56

回答

11

下面是这个过程中你正在寻找:

  1. git checkout master
  2. git merge Farmcrops
  3. git push origin master
  4. git branch -d Farmcrops
  5. git checkout master
  6. git checkout -b Farmcrops
  7. 继续在树枝上Farmcrops您提交...

分行只是指针,它很容易创建/删除一个分支,如果你的分支Farmcrops不会在远程存储库上推送,它绝对没有依赖关系。您可以在合并后将其删除,并从主服务器重新创建它。

希望这会帮助你。

+8

尽管如此,您不应该将'Farmcrops'直接合并到'master'中。先将'master'合并到'Farmcrops'中,检查一切正常,然后才将'Farmcrops'合并到'master'中。 – Jubobs 2014-09-24 19:31:06

+0

@Jubobs感谢你的建议,我从来没有尝试过这种方法。但是合并行为是在本地完成的,你有足够的时间来验证新版本,测试它并确保一切正常,不是吗?这似乎是一个无用的步骤,先按照您的建议进行第一次合并 – 2014-09-24 19:34:47

+2

即使所有东西都是本地的,第一次合并也是有用的,因为它促进了隔离:它为您节省了在master上创建“坏”提交的风险,必须将'master'重置为它的父对象之一,或者还原'master'上的最后一个提交。这是一个安全网。 – Jubobs 2014-09-24 19:36:39

0

在下面的链接中,介绍了如何创建修补程序分支,进行更改并将其合并到主服务器。合并后,只有区别,修复分支被删除。

只需使用Farmcrops作为分支名称,合并后不要删除分支。

GIT-SCM: Basic Branching and Merging

步骤1中创建一个分支,然后进行更改

$ git checkout Farmcrops 
Switched to a new branch 'Farmcrops' 
$ vim index.html 
$ git commit -a -m 'fix the broken email address' 
[Farmcrops 3a0874c] fix the broken email address 
1 files changed, 1 deletion(-) 

[步骤2然后,回到主分支和合并

$ git checkout master 
$ git merge Farmcrops 
Updating f42c576..3a0874c 
Fast-forward 
README | 1 - 
1 file changed, 1 deletion(-) 

而且,如果你想在同一分支上进行更多的更改,再次应用[步骤1]。

当您完成更改后再次应用[步骤2]。

根据需要按照以下步骤操作。

一旦你用这个分支完成你的工作,你可以删除它。

$ git branch -d Farmcrops 
Deleted branch Farmcrops (was 3a0874c). 

NOT:不要合并的,我建议重订GIT-SCM: Rebase

git rebase Farmcrops 
+0

OP的仓库中已经存在'Farmcrops'。 – Jubobs 2014-09-24 19:29:39

+0

我改变了陈述; “git checkout -b Farmcrops” - >“git checkout Farmcrops”,因为分支已经存在,STEP 1可以应用多次。 – wasabi 2014-09-24 19:38:12

27

如果我理解正确的,你从

-- o -- o -- o [master] 
    \ 
    o -- o [Farmcrops] 

开始你不应该直接合并到Farmcropsmaster,因为你运行的,按照惯例,应该是打破了代码master的风险,更稳定。相反,检查出Farmcrops并合并master

git checkout Farmcrops 
git merge master 

然后你会得到

-- o -- o -- o [master] 
    \   \ 
    o -- o -- o [HEAD -> Farmcrops] 

运行一些测试;确保一切按预期工作。然后检查master和合并Farmcrops进去:

git checkout master 
git merge Farmcrops 

您的回购,然后将这个样子:

-- o -- o -- o 
    \   \ 
    o -- o -- o [HEAD -> master,Farmcrops] 

现在,再次检查了Farmcrops,继续实验,就更加的提交,等等。 ..

-- o -- o -- o 
    \   \ 
    o -- o -- o [master] 
       \ 
       o -- o -- o [HEAD -> Farmcrops] 

如果你总是可以依傍master(现在包含“第一轮的变化”,因为你把它)你关于Farmcrops的新实验并没有那么好。

+1

关于此的视觉效果非常有帮助。感谢您抽出宝贵时间。 – 2018-02-15 01:09:14

相关问题