我的网站有GIT设置,其中我有3个分支(开发,登台,主)。开发已经从暂存和掌握方面有了一些变化,现在迫切需要修复错误。
我从开发中检出了一个单独的分支,并为其中的紧急修复提交了更改
现在,当我尝试将这个新分支合并到分段时,它也向我显示了所有先前的更改,而不是显示我刚刚提交给此分支的更改。
任何人都可以告诉我如何在合并到分期时创建一个不显示其他开发分支更改的分支。
答案 0 :(得分:0)
创建新分支时,它将对已签出分支进行所有更改。在你的情况下,你说你在Dev
分支,你创建了新的UrgentChanges
分支& checkout它将包含Dev
分支的所有内容。现在,如果您将UrgentChanges
合并到staging
,那么它将开发工作+紧急工作(来自UrgentChanges
分支)合并到分段中。
您应该做的是在创建staging
分支之前首先结帐到UrgentChanges
。这样,当您将UrgentChanges
合并到staging
时,它将具有原始的分段工作+紧急工作。
答案 1 :(得分:0)
正如Prashanth指出的那样,你希望创建一个新的分支,同时你有一个想要偏离签出的分支 - 在这种情况下你说你想修改分段的分支。
但是我们都经常犯这些错误,这也是git如此伟大的原因之一 - 一切都不会丢失!确保所有更改都已提交到紧急修复分支,并从git log中记下要应用于分段分支的提交的sha。
现在检查您的暂存分支,为了安全起见,创建一个新的urgent2分支。有了你之前提到的shas,你可以将它们挑选到紧急2。
有很多关于樱桃采摘的好教程。这是一个:http://think-like-a-git.net/sections/rebase-from-the-ground-up/cherry-picking-explained.html
答案 2 :(得分:0)
如上所述,如果您不希望在紧急错误修复分支中存在开发分支更改,而不是从开发分支中检出,则应从分段分支进行检出。请按照以下步骤
如果您在当前的开发分支中,请确保提交所有更改,并首先切换到分段分支
git checkout staging
进入暂存分支后,您可以检查新分支以查找错误修复,如下所示
git checkout -b urgentfixbranch
使用git branch命令验证您现在位于urgentfixbranch中(从分段检出)
git branch
显示类似
的内容* urgentfixbranch
staging
master
development
*表示您当前的分支
接下来,您可以对此分支进行所需的所有代码更改和修复,并确保将其提交到分支。完成所有更改后,您可以将这些更改合并到暂存分支,如下所示
git checkout staging
git merge urgentfixbranch
这会将您的紧急修复代码更改合并到暂存,并且由于您是从暂存本身而不是开发创建此分支,因此您现在不会在暂存中进行其他开发更改。然后,您可以在将更改合并到暂存后删除urgentfixbranch。
git branch -d urgentfixbranch
希望这有帮助!