Project Euler open source - это проект, не только помогающий изучить и попрактиковать конструкции языка Java, но и сделать свой первый pull request на GitHub.
1. Сделайте "форк" этого репозитория нажатием кнопки "Fork" в правом верхнем углу страницы. Это создаст копию репозитория на Вашем GitHub аккаунте.
2.Клонируйте Ваш "форкнутый" репозиторий нажатием кнопки "Code":
Откроется маленькое окно:
Скопируйте из него URL и выполните на своем компьютере команду:
git clone https://github.com//project-euler.git
3. Перейдите в папку с проектом:
cd project-euler
4. Добавьте ссылку на оригинальный репозиторий для будущих обновлений:
git remote add upstream https://github.com/AlexandrAnatoliev/project-euler.git
(Напомню, здесь должен быть URL оригинального репозитория, а не "форкнутого" Вами, так что username в нем должно быть `AlexandrAnatoliev`, а не Ваш собственный username.)
5. Проверьте ремоуты для своего репозитория:
git remote -v
Вы должны увидеть origin (добавляется автоматически при клонировании) и upstream удаленные репозитории:
origin https://github.com//project-euler.git (fetch) origin https://github.com/ /project-euler.git (push) upstream https://github.com/AlexandrAnatoliev/project-euler.git (fetch) upstream https://github.com/AlexandrAnatoliev/project-euler.git (push)
6. Выполните pull из upstream репозитория в Вашу master ветку, чтобы синхронизировать ее с основным проектом:
git pull upstream master
7. Создайте новую ветку командой:
git switch -c fix-issue
Сейчас Вы готовы начать работать с issue! Помните, каждый раз сначала делать pull из upstream репозитория, чтобы держать содержимое Вашего локального репозитория в соответствии с главным проектом.
Рекомендую всегда создавать новую ветвь для каждого issue, который Вы выполняете! Иначе pull request будут слишком большими и возможно аозникнут конфликты слияния.
Проект Эйлер содержит более 800 различных задач различной трудности. Вы можете выбрать любую задачу, которую Вы хотите. Вы можете также выбрать и решить несколько задач. Только не забывайте создавать новую ветвь для каждой из них.
Сначала выберите задачу, которую Вы хотите решать и откройте ее директорию:
project-euler ├── Problem1/ │ └── README.md ├── Problem2/ │ └── README.md ├── Problem3/ │ └── README.md └── README.md
Перейдите в README-файл выбранной задачи, чтобы получить информацию об ее сути.
Создайте директорию для вашего решения в формате:
Solution[номер задачи]-[Ваш github nickname]/
Например:
project-euler ├── Problem1/ │ ├── Solution1-User1/ │ ├── Solution1-Username2/ │ ├── Solution1-IvanIvanov/ │ │ ^ │ │ └── директория для Вашего решения │ └── README.md ├── Problem2/ │ ├── Solution2-User1/ │ └── README.md └── README.md
После этого Вы готовы решать задачу!
Добавьте файлы с исходным кодом в Вашу директорию (Наличие README-файла приветствуется)
Пожалуйста, организуйте репозиторий придерживаясь одного из следующих форматов:
Solution1-YourGithubName/ ├── Main.java // Ваш исходный код └── README.md // (Опционально) короткое описание или гайд по использованию
Если код состоит из нескольких классов:
Solution1-YourGithubName/ ├── src/ // Ваш исходный код │ ├── Class1.java │ ├── Class2.java │ └── Main.java └── README.md
Если есть тесты:
Solution1-YourGithubName/ ├── src/ │ ├── main/ // Ваш исходный код │ │ ├── Class1.java │ │ ├── Class2.java │ │ └── Main.java │ └── test/ // (Опционально) тесты │ ├── Class1Test.java │ ├── Class2Test.java │ └── MainTest.java └── README.md
Избегайте лишних файлов (бинарные файлы или метаданные IDE) и проверьте что Ваша программа работает корректно.
Все корректные решения будут добавлены после ревью.
Вам не нужно спрашивать разрешения начать решать задачу, предложенную в issue, т.к. в этом проекте все issue открыты для новых контрибьютеров. Можно сразу же начинать работать с issue прямо сейчас! Однако помните, что на большинстве проектов Вам необходимо спрашивать разрешение прежде чем начать работать с issue. Это необходимо чтобы несколько человек не начали работать над одним и тем же issue одновременно, и соответственно потратили свое время...
После того как Вы решили задачу, Вы готовы отправить изменения!
1. Добавьте Ваши изменения в отслеживание:
git add файлы-которые-вы-изменили
2. Сделайте коммит:
git commit -m "Fixed issue"
3. Отправить изменения в Ваш "форкнутый" репозиторий:
git push origin fix-issue
После того как Вы отправили Ваши изменения на GitHub, Вы готовы создать pull request.
Перейдите на Ваш "форк" репозитория на GitHub.
Поздравляю, Вы сделали свой первый вклад в open source проект на GitHub!
Можете расслабиться и подождать пока не сделают ревью Вашего кода. Если все хорошо, ваш pull request будет принят в основную ветку. Если нет, вам будет предложено внести изменения в Ваш код.
Помните, что нужно подождать ревью вашего pull request, не закрывайте его самостоятельно. Если вас просят сделать изменения, вы можете делать коммиты в ту же самую ветвь, не нужно закрывать текущий pull request и открывать новый.
Столкнувшись с затруднениями, не стесняйтесь открыть issue, написать в раздел Discussions или связаться со мной по почте per-1986@list.ru.
Огромное спасибо всем, кто контрибьютил в этот проект!