假设我们在Git中有以下情况:
创建的存储库:
mkdir GitTest2 cd GitTest2 git init
在主服务器中进行一些修改并提交:
echo "On Master" > file git commit -a -m "Initial commit"
Feature1从master分支出来,并完成了一些工作:
git branch feature1 git checkout feature1 echo "Feature1" > featureFile git commit -a -m "Commit for feature1"
同时,在主代码中发现一个错误,并建立了一个修补程序分支:
git checkout master git branch hotfix1 git checkout hotfix1
该错误已在hotfix分支中修复,并重新合并到master中(可能在请求请求/代码审查之后):
echo "Bugfix" > bugfixFile git commit -a -m "Bugfix Commit" git checkout master git merge --no-ff hotfix1
继续对feature1进行开发:
git checkout feature1
假设我在功能分支中需要此修补程序,也许是因为该错误也发生在这里。如何在不将提交复制到功能分支的情况下实现此目标?
我想防止在功能分支上获得两个与功能实现无关的新提交。如果我使用拉取请求,这对我来说尤其重要:所有这些提交也将包含在拉取请求中,尽管已经完成(因为此修补程序已在主服务器中),但必须进行审查。
我不能做一个git merge master --ff-only
:“致命的:不可能快速前进,中止。”但是我不确定这是否对我有帮助。
git rebase
对我来说似乎就像是黑魔法……
git branch feature1
,git checkout feature1
可以将3. 和可以合并为git checkout -b feature1
4.的内容完全减少为git checkout -b hotfix1 master
feature1
完全位于本地,请查看git rebase
。