标签: git-amend

如何以编程方式编辑旧的git提交消息?

您可以以编程方式仅编辑最后一次提交消息:

git commit --amend -m 'xxxxxxx'
Run Code Online (Sandbox Code Playgroud)

或者以交互方式随机提交:

git rebase -i HEAD~n
# Vim opens up, select the commit you want to modify, and change the word "pick" for "edit"
git commit --amend -m "Changing an old commit message!"
git rebase --continue
Run Code Online (Sandbox Code Playgroud)

我如何结合两者?我想以编程方式更改消息,但是先前提交,而不仅仅是最后一次.

我想要修改的提交已经被推送到git服务器,但让其他人重新同步git项目并不是一个问题.

git git-rebase git-amend git-commit

6
推荐指数
3
解决办法
3833
查看次数

修改推送提交消息

我刚刚推送了一个提交,然后意识到我需要更改提交消息。

所以在我的本地仓库中,我做了:

git commit --amend -m "New commit message"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试推送这个时,我收到了大量错误消息说

Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') and try again
Run Code Online (Sandbox Code Playgroud)

这是修改我的信息的错误方式吗?最后,我不得不重置我所有的 repos,然后用一条新消息再次提交。

所以我的问题是,修改已推送内容的提交消息的正确方法是什么?

git commit-message push git-amend

5
推荐指数
1
解决办法
2560
查看次数

使用 git rebase -i 更改以前提交的代码

我有一个包含各种提交的存储库,我想将其合并为两个补丁。一个补丁介绍了该功能,另一个补丁则更改了现有代码以使用该功能。问题是,当我编码和提交时,我并没有考虑到这一点,所以有些提交同时完成了这两件事。我如何拆分这些提交?

我知道我可以使用 git rebase -i 并为我想要更改的每个提交选择编辑来完成此操作,但这样我只能更改提交消息,而不能更改代码

git rebase git-amend

4
推荐指数
1
解决办法
1099
查看次数

Git修改/改写(不添加/更改文件)

通常我想编辑提交消息,而不必重新选择上次提交的文件集.

git commit file1.c file2.c
Run Code Online (Sandbox Code Playgroud)

提交消息中的意外错误.

git commit file1.c file2.c --amend
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我不想重新选择原始提交中的文件集,我曾经偶然做过git commit -a --amend并无意中添加了许多更改.

我知道git rebase -i HEAD~1然后替换pickr(重新单词),但这最终只是几个步骤.

有没有办法在不包含任何新文件的情况下一步重写最后一次提交?

git git-amend git-commit git-rewrite-history

4
推荐指数
1
解决办法
668
查看次数

git commit --amend - 未进行任何更改时更改提交哈希

我愿意纠正我对此的理解,但我不确定为什么会发生这种情况。

使用 git 时,我知道如果我对文件进行更改然后提交它,我会得到一个新的哈希值,因为文件已更改。

我的理解git commit --amend是我可以对最后一次提交进行更改。

现在我可以理解,如果我更改提交消息,哈希值也会更改。

但是当我不做任何更改而只是保存并退出编辑器时(我可能已经改变了需要更改的想法)为什么哈希会更改?我所有的文件和一切都是一样的,但我已经保存了它。当git log提交的时间没有改变时,它只是在日志中出现两次,同时,相同的消息,相同的文件,除了不同的提交哈希。

如果没有做任何改动,为什么它会改变?

git hash commit git-amend

4
推荐指数
1
解决办法
2023
查看次数

git fake merge(将提交标记为没有真正合并的合并)

假设我的存储库中有以下历史记录:

     E--F
    /
A--B--C---D
Run Code Online (Sandbox Code Playgroud)

我想将其修改为:

     E--F
    /    \
A--B--C---D
Run Code Online (Sandbox Code Playgroud)

我不想修改修订的文件内容,我只想“绘制一个合并箭头”。我怎样才能做到这一点?

我尝试通过以下命令执行此操作:

git checkout D
git merge F -s ours --no-ff --no-commit
git commit --amend
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误消息:

fatal: You are in the middle of a merge -- cannot amend.
Run Code Online (Sandbox Code Playgroud)

我想保持提交信息不变(作者,日期,消息)。我唯一要更改的是将伪merge-info添加到提交中。

git merge git-amend

4
推荐指数
2
解决办法
1571
查看次数

Git commit --amend后Git not-fast-forward错误

我使用git commit --amend修改了之前的提交.在那之后,当我推动我的更改时,由于'not -fast-forward'错误,我被拒绝了.我找到了答案.不幸的是,如命令,git pull --rebase,git fetech origin不工作.如果我的本地仓库没有冲突,为什么我的推送失败了.

git git-amend git-commands

3
推荐指数
1
解决办法
1319
查看次数

带字母 # 的 Git 提交消息

我有一个小问题。在我们公司,我们达成了一项协议,即与错误跟踪器中的某些问题相关的所有提交都应以#<issue_number>(例如,#8956)开头。但是当使用编辑器编写消息时,git 会忽略所有以字母“#”开头的行。如果我使用的git commit -m '#<issue_number> <Message>'话是没有问题的。但我想修改提交并编辑它的消息而不使用-m标志。那么有没有办法让git#在使用编辑器编写提交消息时不忽略以开头的行呢?

git commit-message git-amend

3
推荐指数
1
解决办法
270
查看次数

在没有编辑器窗口打开的情况下修改Mercurial提交?

当我使用mercurial command(hg commit --amend)时,它总是打开编辑器窗口.在git中我可以避免这种情况git commit -a --amend -CHEAD,是否有类似于mercurial的东西?

git version-control mercurial git-amend

3
推荐指数
2
解决办法
163
查看次数

如何将共同作者添加到最新推送的 git commit 中?

我需要在上次提交中添加一个共同作者,我尝试使用git commit --amend --author="name <name@email.com>"但更改--author--co-authored-by. 我认为这将是一个很容易用 google 解决的问题,但一切都只适用于作者而不是合著者。

git github git-amend git-commit

3
推荐指数
1
解决办法
1002
查看次数