Git commit 修改

Git Rebase的使用。

2021-03-13 20:53:00

工作过程中经常遇到已经开发好的功能有一些小变动,一个小功能多次提交看着总是不太舒服,需要使用cherry-pick的时也不方便。

#往上一个提交追加内容

使用 git commit --amend 即可

#修改某一个历史提交

找到该提交的上一个commitId,执行

git rebase <commitId> --interactive

在vi中将pick改为edit,执行 git add ,然后 git commit --amend,最后执行 git rebase --continue

#将多个commit合并为一个

Step 1.  git rebase -i   commit-id    会合并此次提交之后所有的提交为一个提交, 注意此次提交不会包含在内。

Step 2.  在 vim 编辑器中 会列出所有要合并的提交, 并修改内容,  保存并推出vim。            pick  commit-id-1  commit-msg-1   =>  pick  commit-id-1  commit-msg-1            pick commit-id-2  commit-msg-2   =>  s commit-id-2  commit-msg-2            pick commit-id-3  commit-msg-3  =>   s commit-id-3  commit-msg-3

step 3.  如果有冲突发生,解决冲突后并git add 然后运行  git rebase --continue,  在弹出的vim编辑器重重新编辑提交message.              然后保存并退出。 如果要终止这次合并 git rebase --abort ,  git rebase --edit-todo 重新查看和编辑。

Step 4. 如果远程仓库有当前分支,则可能会让我们进行git pull 操作, 此时执行 git push origin :branch-name  删除远程分支,             git branch --unset-upstream  将本地分支和远程分支进行解除关联。

Step 5. 最后运行 git push --set-upstream origin branch-name,  将本地合并的提交推送到远程仓库。 

  • pick:简写p,表示启用该commitId

  • reword:简写r,使用该comitId,但是修改提交信息,修改后可以继续编辑后面的提交信息

  • edit:简写e,使用该commitId,停止合并该commitId

  • squash:简写s,使用该commitId,并将该commitId并入前一个commitId

  • drop:简写d,移除该commitId