Git,使用不同的行尾再次推送提交一次

问题描述 投票:0回答:2

我不小心用错误的行尾(CRLF 而不是 LF)推送了我的提交。是否可以将其回滚并再次发送正确的行尾。因为 pull request 现在一团糟。

git push line-endings
2个回答
5
投票

您可以通过运行

git commit --amend
而不是
git commit
来修改最后一次提交。这不会创建新的提交,而是将分阶段更改添加到最后一次提交。

请注意,这将 rewrite 以前的提交,导致与 rebase 时相同的效果。生成的 Git 提交对象将与之前的不同,依赖该对象的每个人都会遇到问题。 – 一般来说,你不应该在发布后重写提交。

但是在您的情况下,当您提出拉取请求时,您可以这样做,并且通常还希望通过重新设置来改进您的提交,直到它们在拉取请求中被接受。


3
投票

我有一个类似的问题,我为基于 Windows 的回购创建了一个拉取请求,我的 gitconfig 将

autocrlf
设置为 false
false
而不是
true
。我必须修复 multiple 提交的行尾。以下是我的修复方法:

  1. autocrlf
    设置为真:
    git config --global core.autocrlf true
  2. 交互式变基:
    git rebase -i <endCommit>
    。对于 endCommit,使用要修复的最后一次提交之后的提交的哈希/引用。
  3. 当变基提示命令时,为每个命令指定
    edit
  4. 当rebase为每次编辑暂停时,使用
    git reset head~
    git add .
    git commit -m <comment>
    git rebase --continue
    。这将使用更正的行结尾重新应用提交。
  5. 最后,强制推送更新的分支:
    git push origin <branchName> -f

这很乏味,我很想知道是否有人知道更简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.