我开始在没有分支的情况下处理代码中的一系列新功能。
这些新功能尚未准备好部署。但是,已收到紧急请求以解决不同的问题。
我想回到开始添加新功能之前的版本,在那里应用修复,然后部署。
但是,我很困惑哪个应该成为一个分支,哪个版本应该 merge 到哪个版本。
有人可以为我提供这个问题的解决方案,作为一步一步的 git 过程来完成这个问题。
请注意,我从未在源代码管理上进行过分支(现在我明白为什么我应该这样做了)!
最佳答案
这是一种方法,可能还有更简单的方法。这还假设您所做的更改仅在您的机器上本地进行,而不会推送到任何远程分支。
假设我们有
master
|
A - B - C' - D'
C'
和 D'
标记提交了您不想部署的新功能。
首先,在当前提交处创建一个新分支(master
):
git branch new_feature
现在我们必须指向提交 D'
、master
和 new_feature
的指针。这对于不要丢失您已经完成的任何更改很重要。
master
|
A - B - C' - D'
|
new_feature
现在我们要将 master
分支重置为没有新功能的状态,即提交 B
我们可以使用 git reset --hard
.
重要:如果此时您有未提交的更改,它们将会丢失。我建议阅读 this excellent article about git reset
,了解它真正在做什么。
git reset --hard B
结构现在看起来像:
master
|
A - B - C' - D'
|
new_feature
在 master
分支上,您现在可以进行修补程序更改(提交 E
)并将它们推送到 heroku:
master
|
A - B - E
\
C' - D'
|
new_feature
然后您可以将修补程序 merge 到 new_feature
分支中,或者只是将其 rebase 到修补程序之上:
git rebase master new_feature
结果是:
master
|
A - B - E
\
C' - D'
|
new_feature
Pro Git 这本书是学习 Git 的好资源,而且是免费的:http://git-scm.com/book .
关于ruby-on-rails - 我需要对生产应用修补程序,但我没有创建分支,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598141/