我在承诺信中写错了。

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


当前回答

对于任何正在寻找一个Windows/Mac GUI来帮助编辑旧消息(即不仅仅是最新消息),我会推荐Sourcetree。

此分類上一篇

对于尚未推到远程的承诺:

在“Log/History”选项卡中,右键单击您要编辑的承诺(s)下图中的附属线的输入,并选择“Rebase children of <commit ref> interactively..." 选择您要更改的承诺消息的整个行。

...或......对于已经推出的承诺:

遵循这个答案中的步骤,这些类似于上面的,但需要一个进一步的命令运行从命令线(git push 起源 <branch> -f) 强迫推分。

其他回答

您可以使用 Git 重定向. 例如,如果您想要修改回来承诺 bbc643cd,运行

$ git rebase bbc643cd^ --interactive

在默认编辑器中,修改“选择”到“编辑”的行,您想要修改的承诺。

$ git add <filepattern>

现在你可以使用

$ git commit --amend

要改變承諾,然後

$ git rebase --continue

要回到前任首席执行官。

您可以使用 git-rebase-reword

它旨在以同样的方式编辑任何承诺(不只是最后) - 修改

$ git rebase-reword <commit-or-refname>

它被命名为反对互动的行动,以改变一个承诺:“反对”。 查看此帖子和人 - 部分互动模式-

例子:

$ git rebase-reword b68f560
$ git rebase-reword HEAD^

您也可以使用 git filter-branch 为此。

git filter-branch -f --msg-filter "sed 's/errror/error/'" $flawed_commit..HEAD

它不像一个虚假的吉特承诺 - 修正,但它特别有用,如果你已经有一些合并后你的错误的承诺消息。

请注意,这将试图重新写下头部和错误的承诺之间的每一个承诺,所以你应该非常明智地选择你的msg过滤器命令 ;-)

如果您没有将代码推到您的远程分支(GitHub/Bitbucket),您可以按照下面的命令线更改承诺消息。

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

如果你在一个特定的分支工作,这样做:

git commit --amend -m "BRANCH-NAME: new message"

如果你已经用错误的消息推了代码,你需要在更改消息时小心,也就是说,一旦你改变承诺消息并尝试再次推它,你会遇到问题。

请在做之前阅读我的全部答案。

git commit --amend -m "BRANCH-NAME : your new message"

git push -f origin BRANCH-NAME                # Not a best practice. Read below why?

重要注意:当您直接使用强力压力时,您可能会遇到其他开发人员在同一分支上工作的代码问题,因此要避免这些冲突,您需要在强力压力之前从分支中提取代码:

 git commit --amend -m "BRANCH-NAME : your new message"
 git pull origin BRANCH-NAME
 git push -f origin BRANCH-NAME

這是改變承諾訊息的最佳做法,如果它已經被推動。

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

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