Git,push再次提交不同的行结尾

时间:2014-02-26 20:46:30

标签: git push line-endings

我不小心用错误的行结尾推送了我的提交(CRLF而不是OF)。是否可以将其回滚并再次使用右线结束发送。因为拉请求现在很乱。

2 个答案:

答案 0 :(得分:4)

您可以通过运行git commit --amend而不是git commit来修改上次提交。这不会创建新的提交,而是将暂存的更改添加到上次提交。

请注意,这将重写之前的提交,从而产生与重新定位时相同的效果。生成的Git提交对象将与前一个不同,并且依赖于该对象的每个人都会遇到问题。 - 一般情况下,一旦发布,就不应重写提交。

但是,在您的情况下,当您提出拉取请求时,您可以执行此操作,并且通常还希望通过重新定位来改进您的提交,直到拉取请求中接受它们为止。

答案 1 :(得分:1)

我遇到类似的问题,我为基于Windows的仓库创建了拉取请求,而我的gitconfig将autocrlf设置为false false而不是true。我必须修复多个提交的行结尾。以下是我修复的方法:

  1. autocrlf设置为true:git config --global core.autocrlf true
  2. 互动变基:git rebase -i <endCommit>。对于endCommit,使用在最后一次提交之后的提交的哈希/引用来修复。
  3. 当rebase提示输入命令时,请为每个命令指定edit
  4. 当每次修改的rebase暂停时,请使用git reset head~git add .git commit -m <comment>git rebase --continue。这将使用更正的行结尾重新应用提交。
  5. 最后,强制推送更新的分支:git push origin <branchName> -f
  6. 这很乏味,我有兴趣知道是否有人知道更简单的方法。