在Rstudio中撤消git commit,它太大而无法推送

the*_*ral 4 git r github git-commit git-rewrite-history

我对github非常陌生,并试图将其首次纳入我的工作。我在RStudo中工作,使用gui中的commit和push按钮。我将一些数据放在要处理的计算机上的文件夹中。我进行了几次提交,然后提交了该数据,然后又进行了几次提交。然后,我尝试将整个内容推送到github。但是,我收到一条错误消息:

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.        
remote: error: Trace: f4a84c3a176d2c77039d041a21c0c455        
remote: error: See http://git.io/iEPt8g for more information.        
remote: error: File S_Fulltaxonomy.csv is 158.06 MB; this exceeds GitHub's file size limit of 100.00 MB        
To git@github.com:moanam/paper.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@github.com:moanam/paper.git'
Run Code Online (Sandbox Code Playgroud)

现在,我的分支比原始/主节点提前10次提交,而问题提交在中间某个地方。

我一直在寻找解决方案,并在Git历史记录的中间发现了诸如undo commit的帖子 , 如何修改现有的未推送的提交? 以及 当我的分支比master领先5次提交时如何删除提交中的太大文件

但是,解决方案是一行代码,其中原始请求者应替换几个单词并在某个地方运行。我真的很陌生,不知道在哪里运行所有这些代码,替换什么以及如何查找和更改问题,这些都提交到我的工作中。我该怎么做呢?还是在RStudio中有基于GUI的撤消提交的版本?还是有人可以确切解释如何使用代码?

我知道这可能是一个非常简单的问题,很抱歉浪费您的时间。但是,我确实已经花了相当长的时间寻找,找不到适合我使用的任何简单方法!总是假设有太多的知识。谢谢你的帮助!

Ada*_*ing 18

有一个更简单的方法。

我不知道如何通过 Rstudio 做到这一点,但你可以这样做。

转到命令行 --> 导航到您的项目目录

进入后输入:

git 重置 HEAD~

如果您想撤消两次提交,请键入两次。

这将撤消上次提交,但不会删除任何文件。因此文件将全部重新出现在暂存菜单中。之后,在没有大文件的情况下重新提交,然后再次推送,一切都应该没问题。

  • 在 RStudio 中,它基本上是相同的:转到 git 选项卡 > 齿轮图标 > shell。这会打开一个 shell,您可以使用“git reset HEAD~”命令。 (4认同)

the*_*ral 7

我解决了。因此,对于其他任何人:

您可以从RStudio的Git选项卡中打开命令行,然后依次转到“更多”和“ Shell”。

将所有文件备份到另一个位置

输入“ git reset --hard origin/master 这将撤消所有提交,并返回到上一次推送时的状态

将文件复制回您的工作目录(替换旧版本),然后重新提交此后所做的所有更改。确保不复制历史记录文件,否则它将重做所有先前的提交。


小智 1

所以我认为你在这里问了几个问题:

  1. 文件大小较大的提交:您需要在 .gitignore 文件中排除这些文件,以便它们保留在您的本地文件夹中,但不会被推送到您的 github 存储库中。更多信息请参见这里: https: //git-scm.com/docs/gitignore
  2. 恢复 git 提交:您可以使用您发布的命令,但您是对的,您应该知道自己在做什么。因此,花一点时间阅读 git 的基础知识。
  3. 寻找 GUI:您可以使用 GitGUI,有适用于 Mac 和 Windows 的版本https://desktop.github.com/。但由于无论如何你都必须了解 git 的基础知识,恕我直言,GUI 并没有让它变得更容易。坚持下去,你很快就会明白这些东西。