Основы локального использования Git

#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 также может быть центральным репозиторием, хотя на практике мы редко это делаем.