дисклеймер: гитхабом (да и вообще системой контроля версий) ни разу не пользовался, просто решил поинтересоваться.
Верно ли я понимаю, что делая fork репозитория, я делаю полную копию.
Но будет ли считаться форком изменения кода, добавление всякого и прочее.
Верно ли то, что форк нужен для вариативности (различных версий, другого внешнего вида программы, доп.функционала) форкнутого репозитория, и это никак не значит, что репозиторий-родитель будет принимать изменения вносимые в форке?
Fork - это клон репозитория со всей историей и состоянием на момент его создания. При этом сохраняется связь с оригинальным репозиторием и можно по желанию синхронизировать данные в свой форк оттуда или же делать pull requests в оригинальный репозиторий.
С какой целью вы делаете себе форк - дело десятое. Если код в оригинальном репозитории позволяет модификацию (open-source), можете с ним делать что хотите - затачивать под себя, разрабатывать фичу которую потом отправите в оригинальный проект и тд. Если делаете модификации чисто для себя - с авторами оригинального проекта ничего согласовывать не нужно. Если хотите фичу им предложить - тогда сначала заведите issue в оригинальном репозитории, обсудите если надо и потом делайте форк и предлагайте pull request.
Форк — это сугубо ваша копия репозитория. С момента "форкования" вы получаете текущую копию, которая потом никак не синхронизируется с оригиналом. Иными словами, она только ваша. Изменения в форке никак не отразятся на оригинале.
В дальнейшем вы можете вручную синхронизировать форк с оригиналом, тем самым обновляя свою копию. Как правило, форки используются для подготовки изменений в оригинал: вы не можете создать ответвление в оригинальной версии т.к. у нее другой владелец (не вы) — для этого вам надо сначала сделать себе копию, в копии сделать измнения и только потом уже предложить владельцу оригинала применить их у себя.
Иногда форки используются чтобы создать отдельную "ветвь", которая кардинальным образом будет отличаться от оригинала: например, когда у вас соверешенное иное видение того, как должен выглядеть проект, и вы хотите переписать его.
гитхабом (да и вообще системой контроля версий) ни разу не пользовался, просто решил поинтересоваться
Вообще-то, стоило сначала почитать про принципы работы VCS, тогда подобные вопросы не возникали бы...
В описанной ситуации делается merge. В идеале - автоматически (например, если в класс добавлена одна функция Васей, другая - Петей, то в итоговом файле окажутся оба метода). Если же был изменен один и тот же кусок кода - тогда merge conflict надо разруливать ручками.