[英]Update git branch with master without merge
我是一个从事相当大项目的唯一开发人员。 我在master
做了几个重要的改变,我即将恢复在feature
分支上工作,这个feature
已经落后于一个很好的协议。 feature
分支确实需要来自master
的更改,但我不想将更改合并到master
直到feature
上的工作准备好发布。 我认为这是一个相当简单的变基,但我不确定。 下面是我的情况的一个非常简化的版本(实际历史更长)。
* 0e109d5 - (HEAD, origin/master, origin/HEAD, master) latest commit
* 9188511 - major schema change
| * d3472a5 - (origin/feature, feature) feature branch commit
| * 6c36837 - Start of feature branch
|/
* 80d93a8 - Base commit
feature
推送到遥控器进行安全保护,这对于变形来说通常是一件坏事。 但由于它没有与其他任何人共享,我可以简单地删除远程分支并继续它从未存在过吗? 我的remote
只是用于离线存储和安全(它是一个普通的git服务器,而不是github)。 master
feature
并继续处理feature
而无需将master
快速转发到最后一个功能分支提交吗? feature
几乎需要master
所有变化。 HEAD
并尝试将其应用于feature
。 任何建议表示赞赏。 我喜欢git,但我还没有经验。
由于您的远程feature
分支仅出于安全保护的目的而存在且未与其他任何人共享,因此删除分支或强制推送它当然是安全的。 您可以在master
上的分支feature
当前的工作,并继续处理它:
# while staying at feature branch
git rebase master
根据master中的更改,您可能必须在rebase期间解决一些冲突。
要更新远程安全保护分支(除了您自己以外没有其他人看到过):
git push -f origin feature
历史将如下:
* newsha1 - (feature, origin/feature) feature branch commit
* newsha2 - Start of feature branch
* 0e109d5 - (HEAD, origin/master, origin/HEAD, master) latest commit
* 9188511 - major schema change
* 80d93a8 - Base commit
从本质上讲,提交历史会线性增长,就像您在master
引入更改后才开始处理feature
。
我想你想要的这里是rebase
feature
到master
。 做就是了:
git rebase master feature
如果您目前在feature
分支上,只需:
git rebase master
对于你的问题:
它是无关紧要的,因为你是唯一的开发者。 在rebase
,只需使用-f
或--force-with-lease
推送到远程分支。 后者更安全,但对于唯一的开发者来说没有区别。
git push --force-with-lease origin feature
是的,您现在不需要快速转发主人。 完成feature
后,您可以执行此操作。 您可以使用--ff-only
允许快进合并以保持历史记录的线性。
git checkout master git merge --ff-only feature
是的,这里不需要cherry pick
。
无需使用补丁。 Patch
程序用于将更改分发给其他人。
PS。 git
非常友好的patch
。 您可以按照以下方式执行此操作。
git diff > some.patch git apply some.patch
要么
git diff > some.patch patch -p1 < some.patch
要么
git diff --no-prefix > some.patch patch -p0 < some.patch
在我看来好像你只想将master合并到你的功能分支中?
git checkout feature-branch git merge master
将尝试将master中的所有提交移动到您的功能分支中,以便您可以在那里处理冲突/合并问题,而无需触及当前的master
状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.