处理git中的行尾

3

以下是我目前搞砸的情况:

  1. 我从Windows复制(而不是克隆)了一个rails项目到Linux电脑上

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

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

问题:我的问题是,由于我将项目从Windows复制到Linux,当我运行git status时,整个项目都会显示修改。我没有看到我特别做出的更改。由于我提交和推送了整个项目,我失去了文件更改历史记录。

所需操作:因此,我想删除我的最后两个提交,但我想保留我所做的更改。然后,我想将整个项目的行结尾从Windows转换为Unix,以便在运行git status时,我只看到我更改过的文件,而不是整个项目。然后我想提交并推送到远程存储库。

如果有解决这个混乱的解决方案,那就太好了。

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


1
当你说要删除最后两个提交并保留更改时,你是指在存储库中保留更改吗? - Kiloreux
我想在本地保留更改。 - user1670773
2个回答

0

要撤销您最近的两个提交,请运行以下命令:

  1. git reset --soft HEAD~2。这将把涉及到的文件放入您的工作目录中。
  2. 运行 git status,它们将显示为已暂存的更改(准备提交)。
  3. 编辑您的文件。
  4. 暂存并提交您的更改。重要提示:不要推送
  5. 运行 git pull
  6. 运行 git push

确保在 git push 之前提交您的更改并执行 git pull,否则您的推送尝试将导致冲突并被拒绝。


我一直在阅读有关git命令的内容,似乎应该使用git revert而不是git reset,因为我已经推送了我的提交。 - user1670773
我的git revert经验有限,所以我无法提供更多建议。我知道的是我已经使用和测试了上面详细介绍的方法,但这并不意味着它是“正确”的方式。 - HenryTK

-1

您可以使用 git filter-branch 命令。类似问题请参考 这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接