我如何将最后的N承诺集成到一个承诺中?
当前回答
如果您正在使用 GitUp,选择您想要与其父母合并的承诺,并按下 S. 您必须为每个承诺做一次,但它比与正确的命令线引发更简单。
其他回答
在问题上,可以是双重的“最后”是什么意思。
* commit H0
|
* merge
|\
| * commit B0
| |
| * commit B1
| |
* | commit H1
| |
* | commit H2
|/
|
可以使用折扣,但以不同的方式,然后在其他提到的答案:
首頁 / 首頁 / 2
这将向您展示选择选项(如其他答案中提到的):
pick B1
pick B0
pick H0
pick B1
pick B0
s H0
在保存和退出后,将执行命令,然后在H1之后,这意味着它将要求你重新解决冲突(在那里,主将是H1首先,然后积累命令,当它们被应用)。
退缩结束后,您可以选择失败的 H0 和 B0 消息:
* commit squashed H0 and B0
|
* commit B1
|
* commit H1
|
* commit H2
|
P.S. 如果你只是做一些重新设置到BO:(例如,使用重新设置 - 混合,这里详细解释 https://stackoverflow.com/a/18690845/2405850):
git reset --mixed hash_of_commit_B0
git add .
git commit -m 'some commit message'
簡單的單線,總是工作,因為你現在在你想要的分支,主是它起源的分支,最新的承諾包含承諾訊息和作者你想使用:
git reset --soft $(git merge-base HEAD master) && git commit --reuse-message=HEAD@{1}
下面是另一个视觉例子,在执行后会发生什么: git rebase -i HEAD~3
此分類上一篇
來源: https://www.git-tower.com/learn/git/faq/git-squash/
基于这篇文章,我发现这个方法对我的使用更容易。
我的“dev”分支在“起源/dev”前面有96个承诺(因此这些承诺尚未推到远程)。
我宁愿将分支重新设置为“起源/dev”状态(这将使96个分支的所有变更无效),然后立即进行变更:
git reset origin/dev
git add --all
git commit -m 'my commit message'
要避免在重定向同一分支中的承诺时不得不解决任何合并冲突,您可以使用下列命令:
git rebase -i <last commit id before your changes start> -s recursive -X 我們
要将所有承诺分成一个,当您被要求编辑将合并的承诺时(在旗帜上),更新所有但第一个行动,从选择到分解,如其他答案中所建议。
在这里,我们使用合并策略(旗帜)回归和战略选项(X)我们的,以确保历史上后来的承诺赢得任何合并冲突。
注意:不要把这与我们做别的事情的 git rebase 混淆。
引用: git rebase recursive merge 策略
推荐文章
- Bower: ENOGIT Git未安装或不在PATH中
- Bitbucket上的Git:总是要求密码,即使上传了我的公共SSH密钥
- Git别名-多个命令和参数
- 如何添加一个“打开git-bash这里…”上下文菜单到windows资源管理器?
- 是否可以在Git中只提取一个文件?
- 当我做“git diff”的时候,我怎么能得到一个并排的diff ?
- 在git中如何将提交移动到暂存区?
- 如何缩小。git文件夹
- 如何在本地删除分支?
- 找到包含特定提交的合并提交
- Windows上Git文件的权限
- 如何从一个枝头摘到另一个枝头
- 如何获得在两次Git提交之间更改的所有文件的列表?
- 什么是跟踪分支?
- 如何在不稳定的连接上完成一个大项目的git克隆?