Git 如何合并我的";准备好了吗;在未提交;“未准备就绪”;变化?
我有两个分支:Git 如何合并我的";准备好了吗;在未提交;“未准备就绪”;变化?,git,version-control,Git,Version Control,我有两个分支:master和development。development分支包含了一些已完成的新特性和一些未完成的修改,但是还没有提交任何内容。自dev分支创建以来,Master没有更改 我想将已完成的特性提交给dev,并将它们合并回主分支以进行部署,但暂时不提交dev上未完成的修改 顺便说一句,没有任何文件跨越这两个类别(例如,没有任何文件作为新的完整功能的一部分进行更改/添加,该功能后来被修改为尚未完成的功能的一部分) 我的直觉是,我应该手动将完成的特性集中的所有相关文件添加到git队列中
master
和development
。development
分支包含了一些已完成的新特性和一些未完成的修改,但是还没有提交任何内容。自dev分支创建以来,Master没有更改
我想将已完成的特性提交给dev,并将它们合并回主分支以进行部署,但暂时不提交dev上未完成的修改
顺便说一句,没有任何文件跨越这两个类别(例如,没有任何文件作为新的完整功能的一部分进行更改/添加,该功能后来被修改为尚未完成的功能的一部分)
我的直觉是,我应该手动将完成的特性集中的所有相关文件添加到git队列中,提交给dev,然后将分支切换到master并进行合并
但是,这会保存我在dev分支中未提交特性方面的工作吗?或者这是需要隐藏的情况之一?如果是这样的话,正确的操作顺序是什么?您可以在那里使用stash保存本地mod,然后转到master进行合并 但是,如果这些特性是不相关的,我会将所有内容提交给dev,重新设置-I的基址,将未完成的特性放在所有内容之上,然后获取上次完成提交的id 然后从master开始,只需执行git合并最后完成的提交id,就这样了 编辑:使用rebase-i,您可以交互地重新排序提交,因此如果它们是独立的,您应该不会有问题,只需git rebase-i HEAD~5(用于5次提交)并重新排序行即可。
如果您的提交不是独立的,并且需要一个接一个地提交,那么这当然不起作用。您可以在那里使用stash来保存本地mod,然后转到master进行合并 但是,如果这些特性是不相关的,我会将所有内容提交给dev,重新设置-I的基址,将未完成的特性放在所有内容之上,然后获取上次完成提交的id 然后从master开始,只需执行git合并最后完成的提交id,就这样了 编辑:使用rebase-i,您可以交互地重新排序提交,因此如果它们是独立的,您应该不会有问题,只需git rebase-i HEAD~5(用于5次提交)并重新排序行即可。
如果您的提交不是独立的,并且需要一个接一个地提交,那么这当然不起作用。请查看stash和一些如何使用它的示例。
就个人而言,我只需提交脏分支,然后与以前的版本合并。提交在git中很便宜,背后的目的是频繁提交。看看隐藏和一些如何使用它的示例。
就个人而言,我只需提交脏分支,然后与以前的版本合并。提交在git中很便宜,其目的是频繁提交。我认为最简单的解决方案,没有任何技巧,应该是:
git add
。旁注:即使您的更改混杂在一起,您也可以使用
git add--interactive
选择要在下一次提交中进行更改的部分$ git stash --keep-index
$ run tests
$ git stash pop
gitcommit-s
进行自动签核,但这取决于项目使用的实践)$ git stash save
$ git checkout dev
$ git stash pop
通过依赖“master”分支应该快速前进的事实,并通过
git update ref
命令直接操作“master”分支,您将能够在不使用git stash的情况下实现这一点。不过我不推荐 我认为没有任何技巧的最简单解决方案是:
对于所有包含已完成(准备就绪)功能更改的文件,请使用git add
。
旁注:即使您的更改混杂在一起,您也可以使用git add--interactive
选择要在下一次提交中进行更改的部分
(可选)测试您现在在索引中准备的更改:
$ git stash --keep-index
$ run tests
$ git stash pop
根据索引中准备的更改(包含准备就绪的更改)进行提交
(我个人使用gitcommit-s
进行自动签核,但这取决于项目使用的实践)
隐藏尚未准备好的更改
$ git stash save
签出“主”分支,并合并到“开发”分支(这将导致快进):
返回到“dev”分支,取消显示您的更改
$ git checkout dev
$ git stash pop
通过依赖“master”分支应该快速前进的事实,并通过git update ref
命令直接操作“master”分支,您将能够在不使用git stash的情况下实现这一点。不过我不推荐 我不确定我是否完全理解在这种情况下,你所说的重新定基是什么意思——你能澄清一下吗?我对rebase的理解是,它通常是为了使开发分支能够在主分支上独立地进行更改,从而加快速度,方法是导入主分支的新版本,然后在开发的基础上展开更改。在这种情况下,我将如何使用它?谢谢我不确定我是否完全理解在这种情况下,你所说的重新定基是什么意思——你能澄清一下吗?我对rebase的理解是,它通常是为了让开发分支在主分支上独立地进行更改时加快速度,方法是导入主分支的新版本,然后推出更改