我在承诺信中写错了。

我怎么能改變訊息呢?承諾尚未推動。


当前回答

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

另一种方法是删除最后的承诺,但保持它的变化,这样你就不会失去你的工作。

git reset --soft HEAD~1
git commit -m 'New and corrected commit message'

我总是这样做,如果我忘记添加文件或做出更改。

请记住指定 - 软而不是 - 硬,否则你会失去这个承诺完全。

其他回答

如果您正在使用 Git GUI 工具,则有一个按钮称为 修改最后的承诺. 点击该按钮,然后它将显示您的最后的承诺文件和消息. 只需编辑该消息,您可以承诺它一个新的承诺消息。

或使用此命令从控制台/终端:

git commit -a --amend -m "My new commit message"

正如前面提到的那样, git commit --amend 是重写最后一份重写的方式。

git commit -a --amend -m "My new commit message"

如果这是你的最后承诺,只需修改承诺:

git commit --amend -o -m "New commit message"

如果这是一个埋葬的承诺,使用令人惊叹的互动折叠:

git rebase -i @~9   # Show the last 9 commits in a text editor


运行 vimtutor 如果你有时间 hjkl 匹配运动密钥 ← ↓ ↑→ 所有命令都可以用“范围”预定,例如 3j 移动下三个行 i 输入输入模式 - 文本你输入将显示在文件 Esc 或 Ctrlc 输出输入模式和返回“正常”模式 u 到 undo Ctrlr 重定向 dd, dw, dl 删除一个行,字,或字母, 相应 cc, cw, cl 更改一个行,字母,或字母, re

如果你编辑了很多文本,然后转到Dvorak键盘配置,学习触摸类型,并学习Vim。

此分類上一篇


ProTipTM: 不要害怕使用重写历史的“危险”命令进行实验* - Git 不会默认删除您的订单 90 天; 您可以在重写中找到它们:

$ git reset @~3   # Go back three commits
$ git reflog
c4f708b HEAD@{0}: reset: moving to @~3
2c52489 HEAD@{1}: commit: more changes
4a5246d HEAD@{2}: commit: make important changes
e8571e4 HEAD@{3}: commit: make some changes
... earlier commits ...
$ git reset 2c52489
... and you're back where you started

更新您的最后一个错误的承诺消息与新的承诺消息在一个行:

git commit --amend -m "your new commit message"

或者,尝试 Git 重新设置如下:

# You can reset your head to n number of commit
# NOT a good idea for changing last commit message,
# but you can get an idea to split commit into multiple commits
git reset --soft HEAD^

# It will reset you last commit. Now, you
# can re-commit it with new commit message.

使用重新设置将命令分成较小的命令

git 重新设置可以帮助您将一个承诺分成多个承诺:

# Reset your head. I am resetting to last commits:
git reset --soft HEAD^
# (You can reset multiple commit by doing HEAD~2(no. of commits)

# Now, reset your head for splitting it to multiple commits
git reset HEAD

# Add and commit your files separately to make multiple commits: e.g
git add app/
git commit -m "add all files in app directory"

git add config/
git commit -m "add all files in config directory"

在这里,你成功地将最后的承诺分成两项承诺。

如果您需要在多个分支上更改一个旧的承诺消息(即与错误消息的承诺存在于多个分支),您可能需要使用:

git filter-branch -f --msg-filter \
'sed "s/<old message>/<new message>/g"' -- --all

Git 将创建一个临时目录,以重新编写,并在 refs/original/中备份旧参考。

-f 将执行操作,这是必要的,如果临时目录已经存在,或者如果已经有参考存储在 refs/original 下,如果不是这样,你可以放下这个旗帜. -- 将过滤分支选项与审查选项分开。

由于您的旧参考备份,您可以在执行命令之前轻松地返回状态。

说,你想恢复你的主人,并在分支 old_master 中访问它:

git checkout -b old_master refs/original/refs/heads/master