我如何将最后的N承诺集成到一个承诺中?
当前回答
如何回答与此类工作流相关的问题?
许多地方的承诺,混合了多种合并,从大师,最终推到远程,PR和合并到大师由审查员(是的,开发人员将更容易合并 - 经过大师,但团队认为这将减缓过程)。
我没有在这个页面上看到这样的工作流(这可能是我的眼睛)如果我正确地理解复制,多种融合将需要多种冲突解决方案。
所以,这似乎为我们工作。
git pull master git checkout -b new-branch git checkout -b new-branch-temp edit and commit a lot locally, merge master regularly git checkout new-branch git merge --squash new-branch-temp // puts all changes in stage git commit 'one message to rule them all' git push Reviewer does PR and merges to master。
其他回答
要避免在重定向同一分支中的承诺时不得不解决任何合并冲突,您可以使用下列命令:
git rebase -i <last commit id before your changes start> -s recursive -X 我們
要将所有承诺分成一个,当您被要求编辑将合并的承诺时(在旗帜上),更新所有但第一个行动,从选择到分解,如其他答案中所建议。
在这里,我们使用合并策略(旗帜)回归和战略选项(X)我们的,以确保历史上后来的承诺赢得任何合并冲突。
注意:不要把这与我们做别的事情的 git rebase 混淆。
引用: git rebase recursive merge 策略
基于这篇文章,我发现这个方法对我的使用更容易。
我的“dev”分支在“起源/dev”前面有96个承诺(因此这些承诺尚未推到远程)。
我宁愿将分支重新设置为“起源/dev”状态(这将使96个分支的所有变更无效),然后立即进行变更:
git reset origin/dev
git add --all
git commit -m 'my commit message'
许多答案是基于Git Rebase命令,但在我的经验中,它对Git初学者来说有点复杂和先进。
假设你想排除最后3个命令,然后以下是步骤:
下载现行承诺ID: 使用 git log -1 --online 并记住当前状态的承诺ID(仅在您与 git reset 做错事的情况下) 返回 3 个承诺: 使用 git reset --soft HEAD~3 您将返回 3 个承诺(并忘记您以前做过这三个承诺) 做一个新的承诺: 现在简单地做 git commit -m <NEW_SINGLE_MESSAGE> 将自动结合 t
如果与 git reset 发生错误,您可以通过 git reset --soft <ORIGINAL_COMMIT> 返回原始状态。
如果你在一个遥远的分支(所谓的功能分支)从一个黄金储备(黄金_repo_name),那么这里是技巧将你的承诺分成一个:
Checkout the golden repo git checkout golden_repo_name 创建一个新的分支从它(黄金 repo)如下 git checkout -b dev-branch Squash merge 与您的本地分支 你已经 git merge --squash 功能分支 承诺您的变化(这将是唯一的承诺在 dev-branch) git commit -m "My feature complete" 将分支推到您的本地存储库 git push 起源 d
我建议尽可能避免吉特重新设置 - 特别是对于吉特新闻. 除非你真的需要自动化一个过程,基于几个承诺,有一个不那么异国情调的方式。
将被排除的承诺放在一个工作分支(如果它们还没有) - 使用 gitk 为此 查看目标分支(例如“主”) git merge --squash (工作分支名称) git commit
承诺的消息将基于 squash 预受欢迎。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别