1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mindspore-mindscience

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CONTRIBUTION.md 23 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 17:06 6478e89

Руководство по вкладу в mindscience

Как стать вкладчиком репозитория mindscience

  • Введите адрес основного репозитория mindscience на gitee: https://gitee.com/mindspore/mindscience
  • Нажмите кнопку Star в правом верхнем углу, чтобы стать вкладчиком репозитория mindscience
  • Нажмите кнопку Fork в правом верхнем углу, чтобы создать форк основного репозитория mindscience, что подготовит вас к последующим вкладам
star
fork

1. Подача запроса на слияние, чтобы внести свой вклад в репозиторий mindscience

  • Изменённый локально код можно слить с основным репозиторием через ранее созданное вами форковое пространство, выполняя действия по созданию нового запроса на слияние
new pr
  • После нажатия кнопки "Создать новый запрос на слияние", вам потребуется выбрать имя исходной ветки, имя целевой ветки, заполнить заголовок и кратко описать места модификаций ( Обратите внимание: формат заголовка запроса на слияние должен быть [SPONG] + содержание )

  • В нижней части страницы создания запроса на слияние требуется выполнить действие по связыванию Issue ( Обратите внимание: каждый запрос на слияние должен иметь связанное Issue ). Если нет связанного Issue, вы можете самостоятельно создать его. Не забудьте отменить галочку перед "Закрыть Issue после слияния" и затем нажать кнопку "Создать запрос на слияние"

pr_introduction
  • Если в разделе "Связанные Issues" нет доступных вариантов для выбора, вы можете создать Issue в основном репозитории. Если такой возможности нет, пропустите этот шаг. Для этого перейдите в основной репозиторий и нажмите "Создать Issue". Выберите тип Issue, соответствующий вашему запросу на слияние, введите заголовок и нажмите "Создать". Теперь при создании запроса на слияние вы сможете выбрать только что созданный Issue ( Обратите внимание: формат заголовка Issue должен быть [SPONGE] + содержание ).
new_issue
issue_introduction
  • Если вы еще не зарегистрировались в CLA, новый запрос на слияние будет помечен как (mindspore-cla/no). Вам потребуется зарегистрироваться через предоставленную ссылкой i-robot, а затем ввести (/check-cla) в комментариях для проверки. Уже зарегистрированные пользователи могут пропустить этот шаг.
cla
  • После создания запроса на слияние, вам потребуется ввести (/retest) в комментариях для запуска контрольных задач, таких как статическая проверка и тестирование базового функционала. Это гарантирует, что вливаемый код не повредит уже существующие функции в основном репозитории. Если все проверки проходят успешно, рядом со словом SUCCESS появится сообщение о том, что код может быть влит; если же возникают ошибки, вам потребуется перейти по ссылке FAIL и исправить указанные проблемы. После исправлений повторите команду (/retest), пока все проверки не будут пройдены успешно.
retest

2. Добавление новых тестовых случаев для защиты функциональности кода

  • Для вкладчиков, желающих добавить новые тестовые случаи для защиты функциональности своего кода, следует добавить тестовый код в папку mindscience/tests/st. Это обеспечивает защиту функциональности вашего кода при вливании других вкладчиков ( Обратите внимание: время выполнения тестовых случаев должно быть минимальным, так как длительные тесты не подходят для использования в качестве базовых тестов ).

  • Для системных тестовых случаев, которые запускаются после установки whl-пакета, можно использовать любую функцию из whl-пакета. Однако важно добавить (import pytest) и пометить входные точки функций pytest'ом, чтобы они были распознаны контролирующими задачами.

st
  • После завершения работы над тестовым кодом, следует выполнить шаги из первого пункта для загрузки кода в репозиторий. После загрузки новые тестовые случаи будут активированы в контролирующей среде.

Локальные операции с кодом- Ссылки на установочные пакеты Git для различных платформ доступны по адресу: http://git-scm.com/downloads

После установки:

  • Windows система: можно прямо кликнуть правой кнопкой мыши на любом каталоге и выбрать "Git Bash Here" для выполнения git-команд
windows_git_bash_here
Windows_interface
  • Linux система: через терминал войти в каталог, где хранится код, и выполнить git-команды
linux_git_bash

1. Настройка информации

  • Конфигурация имени пользователя позволяет вам добавить информацию о своём аккаунте в коммитах, что используется для статистики по количеству вкладов
git config --global user.name "abc"
git config --global user.email abc@tbs.com
git_user_config

2. Получение кода целевого репозитория

  • Процесс отправки кода: локальный код ----> push на удалённый репозиторий (форкнутый репозиторий) ----> подача запроса на слияние PR в основной репозиторий

  • Используйте git clone + ссылку на репозиторий для получения кода. Ссылка находится в правом верхнем углу репозитория gitee, рядом с кнопками клонирования или скачивания.

git clone ссылка на репозиторий
git clone -b имя_ветки ссылка на репозиторий
Пример: git clone https://gitee.com/mindspore/mindscience.git
  • После получения кода, войдите внутрь каталога для выполнения git-команд ( Обратите внимание: для выполнения команд git pull/push/remote/log и т.д., необходимо находиться внутри каталога ).
git_clone

3. Просмотр информации о репозитории и его ветках

  • Обычно код работает с конкретной веткой репозитория, поэтому большинство действий git имеют два параметра: репозиторий + ветка. Если ветка не указана, действия выполняются по умолчанию для ветки master.

  • Просмотр информации о репозитории и добавление новых репозиториев:

  • a. В каталоге кода используйте git remote -v, чтобы просмотреть добавленные удалённые репозитории и их имена. В дальнейшем вы можете использовать эти имена вместо полных ссылок.

  • b. Если вам нужно добавить несколько репозиториев, используйте git remote add + имя_ветки + ссылка на репозиторий.

git remote -v
git remote add имя_ветки ссылка на репозиторий
Пример: git remote add master https://gitee.com/xxxxxxx/mindscience.git
remote

Просмотр информации о ветках

  • a. Используйте git branch -a для просмотра всех веток, включая локальные и удалённые.

  • b. Чтобы получить дополнительные ветки из удалённого репозитория, используйте git fetch имя_ветки имя_ветки_удаленного:имя_ветки_локальной. Это позволит вам получить код из удалённой ветки и сохранить его в локальной ветке.

  • c. Как только у вас есть новая ветка, вы можете переключиться на неё, используя git checkout + имя_ветки_локальной. Обратите внимание, что если текущая ветка имеет незаписанные изменения, переключение вызовет ошибку. Поэтому либо сохраните изменения, либо отмените их перед тем, как переключиться на другую ветку.

git branch -a
git fetch имя_ветки_удаленного имя_ветки_удаленного:имя_ветки_локальной
git checkout имя_ветки_локальной
branch

4. Создание коммита после изменения кода и объединение нескольких коммитов

  • После того, как вы закончили работу над кодом, вы можете использовать git status для просмотра количества и путей изменённых файлов. Если вы хотите сохранить все изменения, используйте git add .. Если вы хотите сохранить только некоторые файлы, используйте git add путь_к_файлу. Если вы хотите откатить изменения в определённом файле, используйте git checkout путь_к_файлу. После выполнения этих команд, используйте git commit -s для создания коммита и ввода описания изменений. Сохраните изменения, и вы сможете просмотреть созданный коммит с помощью git log.
git status
git add .
git add путь_к_файлу
git checkout -- путь_к_файлу
git commit -s
git log
git rebase -i коммит_id
add
commit_s
  • Объединение нескольких коммитов: иногда, из-за времени или количества изменений, вы можете создать несколько коммитов, но при загрузке кода в репозиторий разрешено только один коммит. В этом случае вы можете использовать git rebase -i + коммит_id для объединения нескольких коммитов. Измените pick на f для каждого лишнего коммита, кроме одного, который останется pick.
rebase_commit
rebase_i
commit_result

5. Обновление локального кода, синхронизация с основным репозиторием — решение конфликтов

  • При желании синхронизировать локальный код с основным репозиторием, если у вас нет изменений или коммитов, вы можете просто использовать git pull имя_ветки имя_ветки_основного.

  • Если у вас есть изменения и коммиты, но вы хотите синхронизировать основной репозиторий и сохранить свои изменения, рекомендуется использовать git pull --rebase + имя_ветки + имя_ветки_основного. Преимущество такого метода заключается в том, что он сначала синхронизирует основной код, а затем автоматически добавляет ваши локальные изменения.

git pull имя_ветки имя_ветки_основного
git pull --rebase имя_ветки имя_ветки_основного
```- Поскольку основной репозиторий используется многими людьми, возможны ситуации, когда одновременно меняют одну и ту же строку. Если кто-то из них сначала вливает свои изменения, то при попытке синхронизации локального кода могут возникнуть конфликты. При использовании `git pull --rebase` для решения конфликтов можно использовать следующие команды:

1. `git status` покажет файлы, которые были изменены как в основном репозитории, так и в вашем локальном коде.

2. В каждом конфликтном файле найдите метки `<<<<<<<<`.

3. Код между `<<<<<<<< коммит>` и `==========` является кодом из основного репозитория.

4. Код между `==========` и `>>>>>>> коммит_id` является вашим локальным изменением.

5. Определите, какие изменения вы хотите сохранить: основные изменения или ваши локальные изменения, или объедините оба.

6. После того, как вы решили все конфликты, используйте `git add .` для сохранения решений.

7. Используйте `git rebase --continue` для продолжения процесса синхронизации следующего коммита. Если вы заранее объединили все свои локальные коммиты в один, вам потребуется выполнить эту команду только один раз.

```bash
git status
git add .
git rebase --continue
git rebase --abort отказаться от синхронизации

6. Отправка измененного кода на удаленный репозиторий и подача запроса на слияние с основным репозиторием PR

  • Вы можете использовать git push для отправки измененного кода на удаленный репозиторий. Если имя ветки не указано, код будет отправлен на ветку master по умолчанию.
git push имя_ветки_удаленного имя_ветки_локальной:имя_ветки_удаленной
git push имя_ветки_удаленного имя_ветки_локальной:имя_ветки_удаленной -f

7. Дополнительно

  • Использование патчей: изменённый код можно сохранить в виде файла .patch с помощью команды git format-patch. Этот файл можно свободно передавать, и любой другой пользователь сможет применить этот патч к своему коду с помощью команды git apply.
git format-patch -i коммит_id
git apply --reject xxxxx.patch
  • Cherry-pick: применение определённого коммита к другой ветке.
git cherry-pick коммит_id
  • После добавления изменений, вы можете использовать git commit --amend для объединения изменений в существующий коммит, без необходимости создания нового коммита.
git commit --amend
  • Принудительное возвращение к определённому коммиту.
git reset --hard коммит_id

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mindspore-mindscience.git
git@api.gitlife.ru:oschina-mirror/mindspore-mindscience.git
oschina-mirror
mindspore-mindscience
mindspore-mindscience
master