#git
#git
Вопрос:
Раскрытие информации, это для присвоения.
Назначение запрашивает создание локального репозитория на высокопроизводительном компьютере?), чтобы клонировать существующий внешний репозиторий на этот компьютер, а затем разрешить локальным пользователям выходить из этого локального главного репозитория. Я определил следующее:
Создайте папку на HPC, где будет храниться проект:
mkdir path/to/project_folder
Внутри папки проекта клонируйте существующий репозиторий:
git clone https://github.com/janesmith/projectXYZ.git
Это перенесет все файлы из репозитория github в локальную папку. Теперь у меня есть локальная версия онлайн-репозитория, но это не обязательно само по себе является репозиторием.
Внутри локальной папки проекта я снова ввожу:
git init
Это превращает папку в пустой репозиторий. Затем я добавляю файлы:
git add *
Это добавляет все файлы. Затем я фиксирую файлы:
git commit -m 'first commit'
Назначение очень расплывчатое, я не уверен, как эти пользователи получают доступ к одному и тому же HPC, поэтому я предполагаю, и что я знаю, так это то, что они являются локальными для репозитория, который я только что создал. Итак, клонирует ли каждый пользователь из основного репозитория?
git clone path/to/project_folder/projectXYZ.git user/projectXYZ
Это создало бы клон репозитория в папку, более локальную для пользователя.
Но как каждый из пользователей отправляет изменения обратно в главное хранилище?
Ответ №1:
Если я правильно понимаю ваше задание, задача состоит в том, чтобы 1) создать локальный репозиторий, который служит благословенным или центральным репозиторием, и 2) позволить пользователям, которые входят в систему на одном компьютере, клонировать этот центральный репозиторий, создавать свои собственные локальные рабочие репозитории, переключаться между центральным репозиторием и их собственными репозиториями.
1. Создайте центральный репозиторий на github:
git clone https://github.com/janesmith/projectXYZ.git --bare -- /path/to/local/repo
В большинстве случаев центральное хранилище является пустым. Убедитесь, /path/to/local/repo
что он доступен для чтения и записи всем пользователям.
2. Вы, как администратор, выполняете некоторую работу по инициализации.
# create your own work repository
git clone /path/to/local/repo -- myrepo
cd myrepo
git checkout master
# edit files
git add .
git commit -m foo and bar
git push origin master
3. Уведомите других пользователей, что центральное хранилище в /path/to/local/repo
готово, и они могут использовать его прямо сейчас.
4. Пользователь A входит в систему и создает свой собственный репозиторий.
git clone /path/to/local/repo -- userarepo
cd userarepo
git checkout master
# edit files
git add .
git commit
git push origin master
# oh, an error says push fails because of non-fast-forward
git pull origin -r master
# oh, merge conflicts encountered
# edit and solve the conflicts
git add .
git rebase --continue
git push origin master
5.Пользователь B хочет получить новую ветку feature_007
от master
.
git clone /path/to/local/repo -- userbrepo
cd userbrepo
git checkout -b feature_007 origin/master
# edit files
git add .
git commit -m "feature_007 is good"
git push origin -u feature_007
6.Пользователь A заинтересован в feature_007
.
cd userarepo
git fetch origin feature_007
git checkout feature_007
# edit files
git add .
git commit -m "fix a bug"
git push origin feature_007
Комментарии:
1. На шаге 4 пользователь создает свое собственное локальное репозиторий и вносит изменения в свой собственный репозиторий, поскольку он больше не привязан к основному репозиторию, над которым работают все остальные?
2. @AriVictor Предположим, у вас есть репозиторий в Github, и вы создаете локальный репозиторий путем клонирования из Github. Вы вносите изменения в локальное хранилище и отправляете коммиты в хранилище Github. Репозиторий Github является центральным репозиторием. Теперь представьте, что вы также размещаете репозиторий Github на локальном компьютере. Вы все еще можете получить к нему доступ из своего собственного рабочего репозитория. Git — это распределенная система. Это означает, что теоретически каждое хранилище во вселенной может служить центральным хранилищем до тех пор, пока другие пользователи могут получить к нему доступ. В случае назначения ваше репозиторий A или B также может быть центральным репозиторием, хотя на практике мы редко это делаем.