Git 常用命令
修改 commit 中的信息
1. 只修改本地最近一次 commit
例如,刚刚在本地进行了一次提交 git commit -m "init"
后觉得commit信息太简短了,或者写错了等情况想要修改这次commit信息时,使用:
git commit --amend
这个命令会进入一个vi编辑界面,完成更改后会用一个新的提交顶替之前最新的提交
# 1. 在本地进行一次提交,commit信息是 “init”
git commit -m "init"
# 2. 查看提交记录
git log
-------
commit 04e8037b01a23984389627eea28c3ee87885aaef (HEAD -> master)
Author: xxx <[email protected]>
Date: Thu Jun 6 14:05:18 2024 +0800
init
-------
# 3.修改提交记录
git commit --amend
-------
[master 57db279] 我把init信息修改了
Date: Thu Jun 6 14:05:18 2024 +0800
4 files changed, 102 insertions(+)
create mode 100644 xxxx
create mode 100644 xxxx
create mode 100644 xxxx
create mode 100644 xxxx
-------
# 4.再查看提交记录
git log
-------
commit 57db279f5d85d87b35f19b0c64bea3d06cc231bd (HEAD -> master)
Author: xxx <xxx.com>
Date: Thu Jun 6 14:05:18 2024 +0800
我把init信息修改了
-------
#
$ git reflog
-------
57db279 (HEAD -> master) HEAD@{0}: commit (amend): 我把init信息修改了
04e8037 HEAD@{1}: commit (initial): init
-------
2. 修改远程 commit
例如,如果这次提交已经推送到远程仓库了,我们发现 commit 信息写错了等情况需要更改时,这通常是不推荐的,因为这会改变已经公开的 commit 历史,可能会导致与其他开发者的冲突。但是,如果你确定要这样做,你可以使用 git rebase
命令结合 --interactive
选项(通常简写为 -i)来编辑 commit 历史。使用:
git rebase -i HEAD~n
其中 n 是你想要修改的 commit 的数量。然后,Git 会打开一个文本编辑器,列出最近的 n 个 commit。你可以修改每个 commit 的操作(pick, reword, edit, squash 等),对于你想要修改 commit 信息的 commit,选择 reword。保存并关闭编辑器后,Git 会为每个标记为 reword 的 commit 打开一个文本编辑器,让你修改 commit 信息。
注意:在重写 commit 历史后,你需要使用 git push --force
来推送你的更改到远程仓库。这将会覆盖远程仓库上的历史,所以请确保你知道你在做什么,并且已经与其他开发者协调好了。
合并 commit
很多情况下我们需要合并 commit,例如第一次 commit 后,发现有处代码忘记更改了,于是更改后又需要 commit 一次
1. 使用 git rebase -i
git rebase -i HEAD~n
其中 n 是你想要合并的 commit 的数量
git rebase -i
的操作都是类似的, 首先会打开一个vi编辑器,然后修改 commit 操作, 合并 commit 需要选择 squash
, 将 pick
改为 squash
或者 s
保存并关闭后,git会继续打开一个vi编辑器让你修改 commit 的内容