33 что такое форк репозитория
Перейти к содержимому

33 что такое форк репозитория

  • автор:

Fork на GitHub — что это такое

Продолжаю увлекательное знакомство новичка с сервисом GitHub и с системой контроля версий Git.

Так как имею учетную запись на GitHub, которую регулярно использую, то у меня возник вопрос, который не мог не возникнуть, рано или поздно. Касается он такой темы, как fork.

Не знаю даже, как правильно поступить дальше — попытаться самому описать вопрос, своими словами; или же попытаться сделать вольный перевод статьи на эту тему — Fork A Repo. Но лучше все же расскажу своими словами.

Fork — это копия репозитория

Fork — это вcего навсего копия репозитория. Это тоже самое, что branch в Git. Только на GitHub такой branch называется

fork

— присутствует своя терминология. Само слово fork в переводе означает ответвление. Для того, чтобы воспользоваться

fork

, нужно иметь свою собственную учетную запись на GitHub; и нужно войти под ней на GitHub в момент выполнения

fork
fork

? Для тех же целей, что и branch в Git. С помощью него создается точная копия оригинального репозитория, только на сервисе GitHub. В копии репозитория можно вносить свои собственные изменения, редактировать файлы или удалять директории.

Как только все изменения будут внесены, то можно поделиться ими — отправить авторам оригинального репозитория запрос на слияние вашего измененного репозитория с их оригинальным репозиторием. Такой запрос называется

pull request

Если авторам оригинального репозитория ваши изменения понравятся, то они могут внести их в свой собственый оригинальный репозиторий — принять запрос и выполнить слияние.

Существование fork полностью отвечает идеологии OpenSource и GitHub, в частности. Идеология OpenSource заключается в свободном обмене исходным кодом программ и fork однозначно помогает в этом деле. С помощью fork можно одним движением получить копию любого исходного кода, выложенного на GitHub в свободном доступе.

Fork — создание копии репозитория

Давайте от слов перейдем к делу и на практике выполним хотя бы один fork на GitHub. К слову сказать, в приведенной выше статье-оригинале Fork A Repo дается ссылка на репозиторий Spoon-Knife, созданный авторами статьи для учебных целей — научиться работать с fork на GitHub. Вы, уважаемый читатель, также можете свободно воспользоваться им для себя, чтобы научиться пользоваться fork.

Я воспользуюсь другим репозиторием, который выложен в свободном доступе достаточно известным верстальщиком Юрием Артюхом (akella). Ниже привожу шаги по созданию Fork на GitHub.

  • захожу на GitHub под своей учетной записью
  • перехожу по ссылке github/akella/sass, по которой расположен репозиторий akella/sass

Репозиторий akella/sass на GitHub

Фактически, теперь я нахожусь в репозитории akella/sass пользователя akella (Юрий Артюх). Об этом красноречиво говорит надпись akella/sass в левом верхнем углу окна браузера. В правом верхнем углу окна браузера нахожу кнопку Fork.

И нажимаю на нее:

Выполненный fork репозитория akella/sass

Может случиться, что вы, уважаемый читатель, ничего и не заметите. Но это не так на самом деле. Приглядитесь к “главной” надписи — она изменилась с

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

Имеется задача — есть локальный git-репозиторий, нужно держать локально git-репозиторий некоего софта с github.com (это для примера), и при этом иметь локальные бранчи (например, какие-то фичи). Этот локальный репозиторий должен периодически обновляться от удаленного (git pull), и также локальные бранчи должны будут ребайзиться (обычно я делал git rebase origin/master).

Я не гуру git’a, как подобное можно провернуть?

cruz7 ★★
20.06.19 01:05:57 MSK

клонировать все ветки репозитория с github

но мне нужно скопировать весь репозиторий. то есть все ветки.

(хорошо бы вместе с историей коммитов, но можно и без)

prozaik ★
22.04.17 19:37:19 MSK

Оно всё и клонирует, просто показывает только одну ветку и не пересоздаёт ref’ы удалённого репозитория. Все те ветки видны в git branch -a . Если хочется, чтобы они сами создались, то есть такое.

xaizek ★★★★★
( 22.04.17 19:49:47 MSK )
Последнее исправление: xaizek 22.04.17 19:50:16 MSK (всего исправлений: 1)

Ответ на: комментарий от xaizek 22.04.17 19:49:47 MSK

не понял. а можно пояснить для тупых?

вот я клонировал весь репозиторий:

kalinin@lenovo /var/www/html/denwer/html/flex/user4 $ git clone https://github.com/zlodiak/zlodiak.github.io.git Cloning into 'zlodiak.github.io'. remote: Counting objects: 33, done. remote: Compressing objects: 100% (21/21), done. remote: Total 33 (delta 8), reused 32 (delta 7), pack-reused 0 Unpacking objects: 100% (33/33), done. Checking connectivity. done. kalinin@lenovo /var/www/html/denwer/html/flex/user4/zlodiak.github.io $ git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/footer_beauty remotes/origin/header_beauty remotes/origin/master 

мне bash пишет, что сейчас клонирована только ветка мастер(и указатель на ней), но кроме неё доступны так же ветки: develop, footer_beauty, header_beauty. но их нужно запросить потому что ссылки на них(куда-то в конфиг гита) скопировались, а содержимое — нет

теперь я хочу заопросить и содержимое. какую команду нудно выполнить?

prozaik ★
( 22.04.17 20:49:23 MSK ) автор топика
Ответ на: комментарий от prozaik 22.04.17 20:49:23 MSK

Это показывается, что есть локальная ветка master и она текущая. Других локальных веток нет, но есть удалённые. Достаточно сделать, например, git checkout develop и локальная ветка соответствующая удалённой будет создана. Сами объекты (коммиты) склонированы, просто ветки не созданы.

Сведения о вилках

Вилка — это новый репозиторий, который использует параметры кода и видимости с исходным репозиторием «вышестоящий».

В этой статье

About forks

Forks let you make changes to a project without affecting the original repository, also known as the «upstream» repository. After you fork a repository, you can fetch updates from the upstream repository to keep your fork up to date, and you can propose changes from your fork to the upstream repository with pull requests. A fork can be owned by either a personal account or an organization.

When you view a forked repository on GitHub, the upstream repository is indicated below the name of the fork.

Screenshot of a repository's page on GitHub. Below the name of the repository,

In open source projects, forks are often used to iterate on ideas or changes before incorporating the changes into the upstream repository. If you fork a public repository to your personal account, make changes, then open a pull request to propose your changes to the upstream repository, you can give anyone with push access to the upstream repository permission to push changes to your pull request branch (including deleting the branch). This speeds up collaboration by allowing repository maintainers to make commits or run tests locally to your pull request branch from a user-owned fork before merging. You cannot give push permissions to a fork owned by an organization. For more information, see «Allowing changes to a pull request branch created from a fork.»

Deleting a fork will not delete the original upstream repository. You can make any changes you want to your fork, and there will be no effect on the upstream. For example, you can add collaborators, rename files, or generate GitHub Pages on the fork without affecting the upstream. After a fork is deleted, you cannot restore the fork. For more information, see «Restoring a deleted repository.» If you delete a private repository, all forks of the repository are deleted.

You can view, sort, and filter the forks of a repository on the repository’s forks page. For more information, see «Understanding connections between repositories.»

About creating forks

You can fork any public repository to your personal account, or to an organization where you have permission to create repositories. If you have access to a private repository and the owner permits forking, you can fork the repository to your personal account, or to an organization on GitHub Team where you have permission to create repositories. You cannot fork a private repository to an organization using GitHub Free. For more information about GitHub Team and GitHub Free, see «GitHub’s plans.»

For instructions for forking a repository, see «Fork a repository.» For more information about when you can create forks, and the permission and visibility settings of forks, see «About permissions and visibility of forks.»

Tip: You can use GitHub Desktop to fork a repository. For more information, see «Cloning and forking repositories from GitHub Desktop.»

Forking a repository versus duplicating a repository

If you want to create a new repository from the contents of an existing repository but don’t want to merge your changes to the upstream in the future, you can duplicate the repository or, if the repository is a template, you can use the repository as a template. For more information, see «Duplicating a repository» and «Creating a repository from a template».

Forking a repository is similar to duplicating a repository, with the following differences.

  • You can use a pull request to suggest changes from your fork to the upstream repository.
  • You can bring changes from the upstream repository to your fork by synchronizing your fork with the upstream repository.
  • Forks have their own members, branches, tags, labels, policies, issues, pull requests, discussions, actions, projects, and wikis.
  • Forks inherit the restrictions of their upstream repositories. For example, branch protection rules cannot be passed down if the upstream repository belongs to an organization on a GitHub Free plan.

Further reading

  • «About collaborative development models»
  • «Creating a pull request from a fork»
  • Open Source Guides
  • GitHub Skills

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *