One of the most important skills of a Git user lies in their ability to maintain a clean, semantic public history of commits. In order to achieve this, they rely on four main tools:
- git commit –amend
- git merge, with or without –no-ff
- git rebase, especially git rebase -i and git rebase -p
- git cherry-pick (which is functionally inseparable from rebase)
git commit –amend
指定 amend 选项执行提交的话,可以修改同一个分支最近的提交内容和注解。当 commit 信息填错了,或者上次 commit 之后修改了文件,但又不想新提交一个 commit,可以使用这个方法。
1)修改 commit 信息:
➜ git add myfile.txt
➜ git commit -m 'xiugaiwenancuowu' # 艾玛,把中文打成拼音了
[master eb96c0a] xiugaiwenancuowu
1 file changed, 1 insertion(+)
➜ git commit --amend # 在唤出的编辑器中修改 commit 信息
[master f72c650] 修改文案错误
Date: Sun Jan 14 18:39:07 2018 +0800
1 file changed, 1 insertion(+)
2)追加 commit 内容
➜ git add myfile.txt
➜ git commit -m '修复了 ios 下列表页不能滑动的问题'
[master eb96c0a] 修复了 ios 下列表页不能滑动的问题
1 file changed, 1 insertion(+)
# 艾玛,发现 iphone 7 还有问题
➜ git add anothorfile.txt # 追加一些修改
➜ git commit --amend # 在唤出的编辑器中修改 commit 信息
[master f72c650] 修复了 ios 下列表页不能滑动的问题
Date: Sun Jan 14 18:39:07 2018 +0800
1 file changed, 1 insertion(+)
不要修改远程的 commit
要记住修改 commit 是一件需要谨慎考虑的事情,因为你相当于在 篡改 历史。特别是当你的 commit 已经推送到远程后,尽量不要试图去修改它,因为其他人可能已经基于你的 commit 提交了新的 commit,如果你强制使用 -f
去覆盖远程的 commit,那么别人的提交就可能会丢失掉。
merge & rebase
参考:交互式 rebase、merge 与 rebase 的区别
cherry-pick
参考:cherry-pick