2013-11-02 71 views
0

所以我在git上有两个分支:developrelease。直到现在我一直在使用develop分支。我只是提交了develop分支,我想在release分支中提供。我该怎么做?我在这里有点困惑。正确地在分支之间切换

1)是否当我做 git checkout -b release

2)要切换回develop分支,我可以做一个结帐这个自动发生的,对不对?还是我需要做一个合并?

回答

2

您有几个选项可以让一个分支上的提交可用于另一个分支 - 您选择哪一个取决于您希望以后如何查看历史记录。

  1. 一个合并将创建的release分支有两个父提交:的develop尖端和release前尖。 release然后将具有从developrelease的所有工作。要合并developrelease,请确保您有干净的工作副本,并运行git checkout release,然后运行git merge develop
  2. 您还可以cherry-pick个人提交的developrelease之上。 Cherry-picking在release上创建了一个新的提交,它执行您提交的名称所做的确切更改。如果你在develop上完成了一大堆工作,这很有用,但你只需要带上一两件事情。要挑选,请查看git log,复制名称为所需提交的sha散列,然后运行git checkout release,然后运行git cherry-pick <commit hash>
  3. 如果您需要将一些大范围的提交从一个提交到另一个,可以使用rebase --and。这有点高级,但如果你好奇,你可以read about it

要回答你的后续问题:

  1. 都能跟得上! git checkout的一般用途是使你的工作副本看起来像一个你名字为的东西。当您运行git checkout release时,git会将工作副本中的实际文件更改为上次提交到release的状态。结帐不会更改现有分支。 (另外,你不需要-b如果release已经存在; checkout -b是一个方便的快捷方式创建并一次性检出一个分支)

  2. 按照同样的思路,切换回,所有你需要再做git checkout develop

+0

感谢您的详细解释!很有帮助:) – rgamber

0

如果你想从一个分支到另一个分支的变化,你必须做一个合并。

+0

或者是樱桃树或者类似的手术,是的。 – torek