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

参考:交互式 rebasemerge 与 rebase 的区别

cherry-pick

参考:cherry-pick


时间被海绵吃了
1.6k 声望93 粉丝

learning and coding