commit 操作

commit 操作汇总

修改

  • commit 未 push

    1
    git commit --amend -m 'New Message';

  • commit 已 push

    修改已经 push 的 commit 信息

    1
    2
    3
    4
    # 定位到需要修改的 commit,n 替换为对应的序号
    git rebase -i HEAD~n

    # 将 pick 改为 edit 或 reword 后,保存退出

    1
    2
    3
    4
    5
    git commit --amend -m 'New Message';

    git rebase --contine

    git push -f

    ​ ![image-20190409143428048](/Users/zhanghexuan/Library/Application Support/typora-user-images/image-20190409143428048.png)

拆分

对某一次提交内容比较多的 commit 进行细化,拆分为多个 commit。

例如:下面这个 commit(功能 B 开发)一共提交了两个文件 b.html 和 c.html,需要将其拆分为两次提交,最终的效果希望是功能 B 开发只包含 b.html,然后功能 C 开发包含 c.html。

1
git rebase -i HEAD~5

1
git reset --soft HEAD~

![image-20190409150353134](/Users/zhanghexuan/Library/Application Support/typora-user-images/image-20190409150353134.png)

此时 b.html 和 c.html 均处于 Index,需要将 c.html 回退到工作区并单独提交 b.html,然后再提交 c.html。

1
git reset HEAD c.html

![image-20190409150652295](/Users/zhanghexuan/Library/Application Support/typora-user-images/image-20190409150652295.png)

1
2
3
git rebase --continue

git push -f

合并

将多个零碎的 commit 合并到一个 commit 中。

例如:将下面’功能 B 开发’和’功能 C’开发合并为一次 commit。

1
git rebase -i HEAD~5

将待被合并的 commit 对应的命令由 pick 修改为 squashfixup

保存并退出,然后会提示修改 commit message

修改后保存退出

最后推送至远程仓库

1
git push -f