【发布时间】:2019-01-22 04:44:42
【问题描述】:
所以目前我在一个功能分支上(比如说f1),develop 分支领先于f1。
另一位开发人员正在开发新功能f2 并提交到develop 分支。现在develop 分支具有f2 功能以及f1 中没有的其他功能。
现在我只想测试功能f2,而不测试develop 上但不在我的分支f1 中的所有其他功能。我怎样才能做到这一点?
重要提示:完成测试后,我希望 f2 退出我的 f1 分支。
现在我正在通过以下方式执行此操作:
- 存储我所有未更改的更改 (
git stash),因为我不确定是否要提交它们 - cherry 选择
f2(git cherry-pick f2) 中的提交 - unstash (
git stash pop) - 测试
- 存储我所有未更改的更改 (
git stash) - 在
f1上恢复精选提交 - unstash 未提交的更改
- 如果所有更改都正常,请提交
f1
有没有更好的方法来做到这一点?
【问题讨论】:
-
我有点困惑。起初,您问“我怎样才能将来自
f2的提交提交到我的分支?”它有一个简单的答案,即挑选提交。然后你描述你所采取的步骤远不止这些:你检查你的分支f1加上你的分支上未提交的更改加上樱桃挑选的提交来自f2通过未进一步指定的测试,如果是这样,您再次清理您的分支并提交您的更改......这些是完全不同的事情。但是,如果这是您想要做的,那么这些步骤就可以了。但不要还原,而是通过 rebase 删除提交。 -
我从来没有说过我想要在我的
f1分支中来自f2的提交,我只是想在f1分支上测试f2。将f2分支文件想象为f1中的未暂存文件。这些步骤是我现在正在做的(并不意味着它们是要遵循的正确步骤),但我正在寻找更好/更快且不易出错的解决方案。未暂存的文件在那里,因为我不确定是否需要进行此更改,只有在测试之后我才会知道,因此我在挑选樱桃之前提交它们没有任何意义。 -
我认为没有更简单的解决方案。我唯一能想到的是将您的更改提交到新分支
f1-test和cherry-pickf2到该分支。这样您就不必一直存储/取消存储。但这使得之后将先前未提交的更改返回到f1变得更加困难。所以你实际上一无所获。 -
我想也许 git-flow 有一个功能可以处理这个问题,或者在 git 中有比我的更简单的方法。
-
据我所知,但也许这里的其他人可以想到一个更简单的解决方案。如果您习惯了 git,那么您的方式不太容易出错 ;-) 如果您曾经破坏某些东西(例如丢失所做的更改),请查看 git reflog。