繁体   English   中英

Git:在同一操作中添加,提交和变基/压缩

[英]Git: add, commit and rebase/squash in same operation

我经常发现自己在功能分支上进行了更改。 然后,我发现我必须进行更改,所以我:

  1. 做出改变
  2. 使用git add -A将所有文件更改添加到索引
  3. 使用git commit -m <commit message>提交更改
  4. 重新设置更改并使用git rebase -i HEAD~2压缩最后两个提交,并压缩最新的提交,这样我最终得到1个提交

这是我经常使用的流程,但感觉很繁琐且手动。 是否有更聪明的方法来执行此操作,或者仅为此类任务创建shell函数或别名更常见? 我说的是步骤2至4。

修改刚对功能分支的HEAD所做的提交的最简单方法也许是通过以下方式修改该提交:

git commit --amend 'your commit message here'

Git commit修订的工作原理是创建一个新的 commit,其功能与旧的commit相同,再加上新的更改,然后用新的commit替换旧的HEAD commit。

请注意,这会重写历史记录,因此它不适用于您已经推送的分支,可能已经被其他人拉出的分支。 但这并不比您当前的变基方法更糟。

作为重载基础方法的替代方法,有一种更简单的方法来压缩分支的两个最高提交。 您可以进行软重置,然后进行提交:

git reset --soft HEAD~2
git commit -m 'made a small change to latest commit'

Git通过将HEAD指针移回两次提交(在这种情况下)来重置软件,同时保留工作目录和阶段。 这样做的效果是,在第一次提交之前,首先将第一次提交中的工作以及第二个补丁提交分阶段进行。 然后,当您提交此工作时,您将有效地将所有内容压缩为一次提交。

但是大多数时候,我发现自己使用commit修改不仅仅可以复位soft来处理这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM