Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除后合并git分支_Git - Fatal编程技术网

删除后合并git分支

删除后合并git分支,git,Git,我有一个git分支,我一直在使用提交的代码处理它,名为feature1。我意识到我想将一些新功能拆分为一个名为feature2的新分支,并从feature1中删除该功能,以保持功能之间的清晰分离 我一直在试图找出一个好方法来完成这一点,以便我以后可以将feature2和/或feature1引入master 我想到的解决方案是基于feature1创建feature2分支,然后从feature1中删除feature2相关代码。我担心这样做是因为如果feature2首先被合并到master中,然后fe

我有一个git分支,我一直在使用提交的代码处理它,名为feature1。我意识到我想将一些新功能拆分为一个名为feature2的新分支,并从feature1中删除该功能,以保持功能之间的清晰分离

我一直在试图找出一个好方法来完成这一点,以便我以后可以将feature2和/或feature1引入master

我想到的解决方案是基于feature1创建feature2分支,然后从feature1中删除feature2相关代码。我担心这样做是因为如果feature2首先被合并到master中,然后feature1被合并,那么“deletes”会从master中删除feature2代码吗


有更好的方法吗?

最好是在添加feature2相关代码的任何部分之前找到最后一次提交,并将
feature2
分支建立在它的基础上

如果所有f2编辑都是在f1编辑之后添加的,则一切正常,只需将
feature1
重置回此提交即可

否则(如果部分编辑是混合的),您可以选择创建两个具有相同根的新分支(pure_f1、pure_f2),然后通过从当前
功能1
中选择单个提交来构造每一个分支

 git branch original-tip
 git branch feature2
 git checkout -b feature1

 git rebase -i HEAD~5 # replace 5 with the number of commits to go back
                      # before any of this work occurred
现在用“编辑”标记所有提交,并删除与功能1没有相关工作的任何行。保存并退出。现在将提示您编辑这些提交。添加您需要的任何内容,并将其分阶段播放,然后

 git rebase --continue
重复此过程,直到完成重新基准

 git checkout feature2
对功能2应用与前面相同的步骤。在此之后,您将拥有两个独立的功能和一个分支,指向将它们结合在一起的位置

加上:

还有另一种方法可以做到这一点

 git checkout -b start HEAD~5
 git checkout -b feature1
 git branch feature2
现在使用收银台和/或樱桃镐来制作树枝。这是一种更为手动的方法,用于获取每次提交所需的确切树。有趣的是添加和重置的补丁选项。在这种情况下,git签出的语法也很有用:

 git checkout <some sha1> -- some files
git签出--一些文件

Git为您提供了许多实现所需的方法。根据提交的隔离程度,您可以选择一种方法而不是另一种方法

如果feature1和feature2的代码在单独的提交(甚至可能是单独的文件)中,我认为重定基址可能是一种方法。不幸的是,我对如何使用
rebase
为您提供具体的解决方案知之甚少。如果您对feature1和feature2有单独的提交,只需分支并执行“rebase-I master”(交互式rebase)。然后在feature2分支中忽略关于feature1和viceversa的提交。请停止编辑问题和答案。非常感谢。