Git 技巧
Git Rebase
Section titled “Git Rebase”提交代码时,我曾经使用随意消息,但发现这不是一个好习惯。所以我想删除该提交。我找到了以下命令。
首先,使用git日志查找要更改的提交的提交哈希,并运行以下命令:
git rebase -i <casual-message-commit-hash>~2然后,git 将打开待办事项编辑器,你可以更改每个提交的操作。在那里,我们只需要找到要删除的提交的哈希,然后将其前面的动作从 pick 改为 fixup。
然后保存并退出。
此操作将使它与父提交合并,使用父提交的提交信息。最后,使用 git push -f 将代码推向远程。
或者,可以使用 sqush 或 reword 而不是 fixup
这是 rebase 中的所有命令:
Commands:p, pick <commit> = use commitr, reword <commit> = use commit, but edit the commit messagee, edit <commit> = use commit, but stop for amendings, squash <commit> = use commit, but meld into previous commitf, fixup [-C | -c] <commit> = like "squash" but keep only the previous commit's log message, unless -C is used, in which case keep only this commit's message; -c is same as -C but opens the editorx, exec <command> = run command (the rest of the line) using shellb, break = stop here (continue rebase later with 'git rebase --continue')d, drop <commit> = remove commitl, label <label> = label current HEAD with a namet, reset <label> = reset HEAD to a labelm, merge [-C <commit> | -c <commit>] <label> [# <oneline>] create a merge commit using the original merge commit's message (or the oneline, if no original merge commit was specified); use -c <commit> to reword the commit messageu, update-ref <ref> = track a placeholder for the <ref> to be updated to this position in the new commits. The <ref> is updated at the end of the rebase
These lines can be re-ordered; they are executed from top to bottom.
If you remove a line here THAT COMMIT WILL BE LOST.
However, if you remove everything, the rebase will be aborted.