我是一个从事一个相当大的项目的唯一开发人员.我做了几个重要的改变master,我即将恢复在一个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
Run Code Online (Sandbox Code Playgroud)
feature了遥控器的安全保护,这通常是改装的坏事.但由于它没有与其他任何人共享,我可以简单地删除远程分支并继续它从未存在过吗?我remote只是为了离线存储和安全(它是一个普通的git服务器,而不是github).master到feature,只是继续工作feature而不同时快速转发master到最后一个特性分支承诺?feature几乎需要所有的变化master.HEAD尝试应用它)feature.任何建议表示赞赏.我喜欢git,但我还没有经验.
YS-*_*S-L 10
由于您的远程feature分支仅仅是出于安全保护的目的而存在且未与其他任何人共享,因此删除分支或强制推送它肯定是安全的.您可以在分支衍合你目前的工作feature的master,并继续工作:
# while staying at feature branch
git rebase master
Run Code Online (Sandbox Code Playgroud)
根据master中的更改,您可能必须在rebase期间解决一些冲突.
要更新远程安全保护分支(除了您自己以外没有其他人看到过):
git push -f origin feature
Run Code Online (Sandbox Code Playgroud)
历史将如下:
* 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
Run Code Online (Sandbox Code Playgroud)
从本质上讲,提交历史会线性增长,就像feature您在引入更改后才开始工作一样master.
我想你想要的这里是rebase feature到master.做就是了:
git rebase master feature
Run Code Online (Sandbox Code Playgroud)
如果您目前在feature分公司,只需:
git rebase master
Run Code Online (Sandbox Code Playgroud)
对于你的问题:
它是无关紧要的,因为你是唯一的开发者.之后rebase,只需用-f或推送到您的远程分支--force-with-lease.后者更安全,但对于唯一的开发者来说没有区别.
git push --force-with-lease origin feature
Run Code Online (Sandbox Code Playgroud)是的,您现在不需要快速转发主人.你可以在完成工作后完成feature.您可以使用--ff-only仅允许快进合并来保持历史线性.
git checkout master
git merge --ff-only feature
Run Code Online (Sandbox Code Playgroud)是的,cherry pick这里不需要.
无需使用补丁.Patch用于将您的更改分发给其他人.
PS.git非常友好patch.您可以按照以下方式执行此操作.
git diff > some.patch
git apply some.patch
Run Code Online (Sandbox Code Playgroud)
要么
git diff > some.patch
patch -p1 < some.patch
Run Code Online (Sandbox Code Playgroud)
要么
git diff --no-prefix > some.patch
patch -p0 < some.patch
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
6004 次 |
| 最近记录: |