将选定的git提交到Visual Studio中的其他分支

时间:2015-06-20 21:52:56

标签: git visual-studio version-control git-rebase

我开发了许多非常相似的项目 - 使用相同的基本功能。我的情景假设,我有基本分支,例如'掌握',然后我从' master'新分支,例如' project1-dev',' project2-dev' - 创建的分支是单独开发的,但有时我想为project1-dev添加新功能,然后将此功能移动到' master',然后与' project2-dev'合并。在Visual Studio 2015中,我可以使用' Rebase' ,但它也会在添加新功能之前移动添加的更改。 enter image description here

有没有办法从' project1-dev'移动选定的提交?到'掌握',然后与' project2-dev'合并?

2 个答案:

答案 0 :(得分:0)

您可以轻松地将新功能从project1-dev合并到masterproject2-dev,方法是将该功能保存在由所有三个分支的最佳共同祖先创建的新分支中。这是git-merge-base派上用场的地方。

使用此命令(注意反向标记的使用):

$ git checkout -b new_feature_branch `git merge-base master project1-dev project2-dev`

您最终会得到一个名为new_feature_branch的新分支,其HEAD设置为masterproject1-devproject2-dev的共同祖先。< / p>

(如果只运行$ git merge-base master project1-dev project2-dev,您将获得这三个分支的共同祖先的提交SHA。)

这个新分支是您进行新功能的地方。完成后,您可以将其合并回所有三个分支,而不将其他不需要的作品合并到masterproject2-dev

$ cd new_feature_branch
$ # do some work and commit 
$ git checkout master
$ git merge --no-ff <new_feature_branch> # merge new feature into master
$ git checkout project1-dev
$ git merge --no-ff <new_feature_branch> # merge new feature into project1-dev
$ git checkout project2-dev
$ git merge --no-ff <new_feature_branch> # merge new feature into project2-dev

答案 1 :(得分:0)

首先,因为你首先使用rebase我假设你还没有推动你将要移动的任何更改,或者你是项目中唯一的一个并且会做{{{ 1}}等等。

无论如何,让我们说你想从git push -fproject1-dev只提交一些提交,但只能提交到提交A,但是远远超过提交者的头部{ {1}}。执行以下操作:

master