Страница вкладов GitHub показывает слишком много изменений - PullRequest
1 голос
/ 08 февраля 2020

Я настраивал свою страницу в Jock Overflow Jobs и заметил, что в одном из моих репозиториев у меня есть 3 521 316 добавлений и 3 459 307 удалений, что, похоже, не подходит, поэтому я решил провести расследование. Используя страницу вкладов GitHub, я локализовал изменения на 26–27 января , где говорится, что было 30 коммитов с 3 507 040 добавлений и 3 453 801 удалений. Однако, когда я нажимаю текст 30 commits, чтобы увидеть коммиты, появляется только два , всего 208 добавлений и 152 удаления. Я даже проверил все остальные ветки, чтобы увидеть, есть ли у них другие коммиты в этот промежуток времени, и ни один из них не сделал. просто хочу, чтобы они были точными ради точности, но я понятия не имею, почему они настолько неверны или как их исправить. Я искал в Интернете решения, но все, что я нашел, это то, что вклады не появлялись, а не слишком много вкладов.

Ответы [ 3 ]

0 голосов
/ 08 февраля 2020

После возврата к истории фиксации произошли массовые коммиты, в которых я изменил несколько огромных JSON файлов данных, поэтому это не является ошибкой со стороны GitHub (за исключением приписывания всех этих изменений). на один день на странице участников). Зная, что на самом деле было огромное количество изменений строк, я решил попытаться выяснить, как игнорировать эти файлы, и наткнулся на эту проблему , которая привела меня к этому разделу README проекта лингвиста GitHub. После некоторого дурачения я понял, что помечая файлы как сгенерированные в файле .gitattributes, они будут исключены из различий, и, следовательно, предположительно, их строки будут исключены из общего вклада. На данный момент мой общий вклад не был исправлен, но страница Linguist отметила, что обновления выполняются в очереди с более низким приоритетом, поэтому это может занять некоторое время.

Чтобы игнорировать файл, добавьте один из эти атрибуты к нему в вашем .gitattributes файле. Файл .gitattributes использует тот же синтаксис шаблона, что и файлы .gitignore. Если вам нужно сделать это задним числом, вам нужно добавить / изменить файл .gitattributes, создать коммит, а затем переназначить его на и вставить его в прошлое .

*.txt linguist-generated
# `linguist-generated` marks a file as generated, so it won't count toward
# language statistics or commit additions/deletions.

README.txt -linguist-generated
# prepending an attribute with a `-` removes it from the file

/libs/somelibrary.js linguist-vendored
# `linguist-vendored` marks a file as an external file such as a library. This 
# file will still appear in commit diffs, but it won't contribute to the
# repository's language statistics

/docs/** linguist-documentation
# `linguist-documentation` marks a file as documentation. This has the same
# effect as `linguist-vendored`.

/configs/*.json linguist-detectable
/tools/merge_configs.py -linguist-detectable
# `linguist-detectable` marks a file to be counted in language statistics. 
# By default it is enabled for programming languages, so you can use it to 
# either include non-code files, or exclude code files.
0 голосов
/ 02 апреля 2020

У меня была такая же проблема с графиком вкладов репозитория GitHub, и наконец я нашел, как это исправить. Стоит отметить, что лингвист мне не помог.

Если что-то пошло не так с первой или второй частью, здесь вы можете найти, как отменить rebase. И, пожалуйста, не забудьте сохранить резервную копию вашего хранилища.

Изменение имени автора коммита

Примечание : это перезапишет хранилище История коммитов и все коммиты, которые были отправлены после плохого коммита , будут видны как выданные сегодня в {repo-url}/commits/{branch} (исходная дата коммитов не изменится).

Более подробный источник .

  • Итак, прежде всего, создайте резервную копию вашего хранилища и сохраните куда-нибудь.

  • Теперь вы должны найти ваш плохой коммит га sh

  • Затем найдите коммит, который идет перед этим коммитом (более ранний коммит). Вы можете сделать это с помощью git log.

  • Скопируйте этот коммит ha sh и выполните следующее:

    git rebase -i earlier_commit_here
    
  • Текст редактор появится. Найдите свой плохой коммит и замените слово «выбрать» на «редактировать» рядом с ним (для этого нажмите кнопку i на клавиатуре, затем измените текст, нажмите Esc и введите :wq сохранить и выйти).

  • Теперь вам нужно сменить автора коммита на что-то похожее без электронной почты ( source ):

    git commit --amend --author="nocontribute <>"
    
  • До финиша sh rebase введите следующее:

    git rebase --continue
    
  • Сила пу sh История:

    git push --force
    
  • Немного подождите для обновления графика участника (до 24 часов).

В моем случае я испортил свой репозиторий, и описанные выше шаги не помогли , Если график вашего участника остается прежним, вы можете сделать следующее:

Создать новый репозиторий и перенести в него все коммиты

Основная идея этих шагов - cherry-pick и push плохой коммит отдельно от других коммитов. Поэтому, если у вас более одного плохого коммита , имейте это в виду. Если вы делаете sh все коммиты вместе, он подсчитает ваш плохой коммит с автором "nocontribute". Странно, но это правда. Чтобы определить это, потребовалось много времени.

Предыдущие шаги также должны быть выполнены.

Примечание : это не только переписывает историю коммитов в репозиторий, но и также очистит всю вашу статистику (так как вы создадите новый репозиторий). Останутся только коммиты.

Подробный источник для перемещения коммитов в другой репозиторий .

  • Измените свой текущий репозиторий имен на GitHub на что-то вроде currentname-outdated.

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

  • cd в новый клонированный каталог репозитория и введите следующее:

    git remote add oldrepo https://github.com/path/to/oldrepo
    
  • Затем обновите его:

    git remote update
    
  • Теперь cd в старом (устаревшем) хранилище и сохраните его в файл журнала коммитов:

    git log --pretty="format:cp %h" > commits.txt
    
  • Затем переверните строки в этом файле (вы можете использовать либо инструменты командной строки (стоит отметить, что команда tail работала не так, как я ожидал, она добавила два коммита в одной строке) или использовать онлайн-инструмент, такой как this ), и сохранить его в commits.sh file.

  • Теперь откройте commits.sh файл и скопируйте и обрежьте bad commit и все коммиты после этого и сохранить в другом месте. Таким образом, вы будете иметь коммиты до плохого коммита в вашем файле commits.sh.

  • Создайте новый псевдоним для cherry-pick:

    alias cp='git cherry pick '
    
  • cd в ваш новый репозиторий и выполните commits.sh:

    sh ../currentname-outdated/commits.sh
    
  • Pu sh изменения в репозитории:

    git push
    
  • Проверьте график ваших авторов здесь: {repo-url}/graphs/contributors. Проверьте, все ли в порядке.

  • Затем возьмите плохой коммит , выберите его и pu sh:

    cp bad_commit
    git push
    
  • Снова проверьте график участника.

  • Если все в порядке, откройте оставшиеся коммиты, удалите оттуда bad commit и замените коммиты в commits.sh на сохраненные коммиты (кроме плохого коммита , поскольку вы уже нажали его).

  • Выполнить commits.sh еще раз:

    sh ../currentname-outdated/commits.sh
    
  • Проверьте свой график.

  • Теперь перейдите к перемещению других элементов из вашего старого хранилища (таких как проблемы, метки, теги и т. Д.).

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 08 февраля 2020

Я проверил, и это похоже на проблему с GitHub. Я попробовал обходной путь, и он сработал: go для ссылки на GitHub, которой вы поделились (для промежутка времени между 26 и 27 января 2019 ), затем выберите вариант Additions из выпадающего списка. , в правом верхнем углу, см. скриншот ниже enter image description here Теперь график вклада будет перерисован, снова нажмите на это же выпадающее меню и выберите опцию Commits. Теперь нажмите на 30 commits, теперь вы найдете все свои коммиты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...