Отменить git commit в Rstudio, который слишком велик для нажатия

Я очень новичок в github и впервые пытаюсь включить его в свою работу. Я работаю в RStudo, используя кнопки фиксации и нажатия в графическом интерфейсе. Я помещаю некоторые из своих данных в папку на моем компьютере, где я работаю. Я сделал несколько коммитов, затем я зафиксировал эти данные, а затем сделал еще несколько коммитов. Затем я попытался отправить все это на 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 [email protected]:moanam/paper.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:moanam/paper.git'

Моя ветка теперь опережает origin/master на 10 коммитов, а проблемный коммит находится где-то посередине.

Я искал решения для этого и нашел такие сообщения, как отменить фиксацию в середине Git история, Как изменить существующие неотправленные коммиты? и Как удалить слишком большой файл в коммите, если моя ветка опережает master на 5 коммитов

Однако решения этой проблемы представляют собой строку кода, в которой первоначальный запрашивающий должен заменить несколько слов и запустить ее где-нибудь. Я действительно очень новичок в этом и понятия не имею, где запускать весь этот код, что подставлять и как найти и изменить проблемный коммит в моей работе. Как мне это сделать? Или есть версия отмены фиксации в RStudio на основе графического интерфейса? Или может кто-нибудь объяснить, как именно использовать код?

Я знаю, что это, вероятно, очень простой вопрос, и мне жаль тратить на него ваше время. Тем не менее, я действительно потратил довольно много времени на поиски и не могу найти ничего достаточно простого, с чем я мог бы работать! Всегда предполагается слишком много знаний. Спасибо за вашу помощь!


person thestral    schedule 18.10.2016    source источник


Ответы (3)


Я разобрался. Итак, для всех остальных:

Во-первых, создайте резервные копии всех ваших файлов в другом месте (исходные файлы будут удалены)

Вы можете открыть командную строку из RStudio на вкладке Git, а затем перейти в «Дополнительно», а затем «Оболочка».

Введите git reset --hard origin/master Это отменит все коммиты и вернет к тому, что было при последнем нажатии.

Скопируйте файлы обратно в свой рабочий каталог (заменив более старые версии) и повторно зафиксируйте все изменения, которые вы сделали с тех пор. Убедитесь, что вы не копируете файл истории, иначе он повторит все ваши предыдущие коммиты.

person thestral    schedule 19.10.2016
comment
Если вы хотите узнать, сколько коммитов у вас есть с момента вашего последнего коммита, вы можете увидеть их: Перейдите в Rstudio | вкладка git | Мастер (значок). Вы получаете сообщение, показывающее что-то вроде: ' M R/your_changed_file.R Ваша ветка опережает "origin/master" на 1 коммит. (используйте git push для публикации ваших локальных коммитов) ' - person Agile Bean; 05.08.2018
comment
Даже когда я удаляю историю, старые коммиты все еще там. Есть идеи, почему? - person ethan tenison; 08.06.2021

Есть более простой способ.

Я не уверен, как это сделать через Rstudio, но вы можете сделать это вместо этого.

Перейдите в командную строку --› перейдите в каталог вашего проекта

Оказавшись внутри, введите:

git сбросить ГОЛОВУ~

Если вы хотите отменить два коммита, введите его дважды.

Это отменит последнюю фиксацию, но не удалит файлы. Поэтому все файлы снова появятся в поэтапном меню. После этого повторите коммит без больших файлов, затем нажмите еще раз, и все должно быть в порядке.

person Adam Waring    schedule 27.07.2020
comment
В RStudio это в основном то же самое: перейдите на вкладку git › значок шестеренки › оболочка. Это вызывает оболочку, и вы можете использовать команду git reset HEAD~. - person filups21; 01.11.2020

Поэтому я думаю, что вы задаете пару вопросов здесь:

  1. Коммит с большим размером файла: вам нужно будет исключить эти файлы из вашего файла .gitignore, чтобы они оставались в вашей локальной папке, но не попадали в ваш репозиторий github. Подробнее об этом здесь: https://git-scm.com/docs/gitignore
  2. Отмена коммита git: вы можете использовать команды, которые вы опубликовали, но вы правы, вы, вероятно, должны знать, что делаете. Так что потратьте немного времени и прочитайте основы git.
  3. Ищете графический интерфейс: вы можете работать с GitGUI, есть версия для Mac и Windows https://desktop.github.com/ . Но поскольку вам все равно придется понимать основы git, имхо, графический интерфейс не делает его намного проще. Придерживайтесь этого, и вы быстро поймете такие вещи.
person worldcollector    schedule 18.10.2016