modify - git提交到上一个commit




推后更改git commit消息(因为没有人从远程拉出) (6)

改变历史

如果它是最近的提交,你可以简单地这样做:

git commit --amend

这将带有编辑器的最后一个提交消息,并让你编辑消息。 (如果您想清除旧信息并使用新信息,可以使用-m 。)

推动

然后当你推动时,这样做:

git push --force-with-lease <repository> <branch>

或者你可以使用“+”:

git push <repository> +<branch>

或者你可以使用--force

git push --force <repository> <branch>

使用这些命令时要小心。

  • 如果其他人将更改推送到同一分支,则可能希望避免销毁这些更改。 --force-with-lease选项是最安全的,因为如果有任何上游更改,它会中止

  • 如果你没有明确指定分支,Git将使用默认的推送设置。 如果您的默认推送设置为“匹配”,那么您可以同时销毁多个分支上的更改。

之后拉/取

任何已经拉动的人现在都会收到一条错误消息,他们需要更新(假设他们自己没有做任何修改)通过这样做:

git fetch origin
git reset --hard origin/master # Loses local commits

使用reset --hard时要小心 - reset --hard 。 如果您对分支有更改,这些更改将被破坏。

关于修改历史记录的说明

被破坏的数据实际上只是旧的提交信息,但--force不知道,并且会高兴地删除其他数据。 所以想想 - 因为“我想销毁数据,而且我确切知道哪些数据正在被销毁。” 但是当被销毁的数据被提交时,通常可以从reflog中恢复旧的提交 - 数据实际上是孤立的而不是被销毁的(尽管孤立的提交被定期删除)。

如果你不认为你在破坏数据,那么远离 - --force ...... 可能会发生不好的事情

这就是为什么--force-with-lease更安全一些。

我做了一个git commit和随后的推送。 我想更改提交消息。 如果我理解正确,这是不可取的,因为有人可能在我做出这样的更改之前从远程存储库中取出。 如果我知道没有人拉扯什么?

有没有办法做到这一点?


在控制台中使用这两个步骤:

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

接着

git push -f

完成:)


命令1

git commit --amend -m "New and correct message"

然后,

命令2

git push origin --force


说啊 :

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

接着

git push --force origin <BRANCH-NAME>

这对我来说很好,

git checkout origin / branchname

如果你已经在分支机构,那么最好做拉或重新分配

git pull

要么

git -c core.quotepath=false fetch origin --progress --prune

稍后你可以简单地使用

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

或者如果你想打开文本编辑器,然后使用

git commit --amend

如果你有很多评论,我会更喜欢使用文本编辑器。 您可以使用命令设置您的首选文本编辑器

git config --global core.editor your_preffered_editor_here

无论如何,当你完成改变提交信息时,保存并退出

然后运行

git push --force

你完成了





commit