处理git的行结尾

时间:2016-01-12 16:34:18

标签: linux git unix newline line-endings

到目前为止,这是我搞砸了,

  1. 我将一个rails项目从windows复制(未克隆)到linux pc

  2. 然后创建了一个新分支并进行了大量更改

  3. 最后提交了两次整个项目并将其推送到一个带有Windows行结尾的远程存储库。

  4. 问题:所以我的问题是,因为我将项目从windows复制到linux,当我运行git status时整个项目显示已修改。我没有看到我具体做出的改变。由于我承诺并推动整个项目,我失去了文件更改的历史。

    需要什么:所以我想删除我的最后两次提交,但我想保留我所做的更改。然后我想将行结尾从windows转换为整个项目的unix,这样当我运行git status时,我只看到我更改的文件,而不是整个项目。然后我想提交并推送到远程。

    如果有一个解决这个烂摊子的话会很好。

    我不确定这是否有用,我正在开发一个rails项目,我的IDE是rubymine。

2 个答案:

答案 0 :(得分:0)

要撤消上两次提交,请执行以下操作:

  1. git reset --soft HEAD~2。这会将提交中涉及的文件放入您的工作目录。
  2. 运行git status,它们将显示为分阶段更改(准备提交)。
  3. 编辑文件。
  4. 分阶段并提交您的更改。 重要提示:不要推
  5. 运行git pull
  6. 运行git push
  7. 确保您提交更改并在git pull之前执行git push,否则您的推送尝试将导致冲突并被拒绝。

答案 1 :(得分:-1)

您可以使用public void some_method< T >() where T : class1, class2。 类似问题here