Visual Studio 2015 git Push для сетевого диска

Я работаю над проектом C ++ с несколькими другими людьми в Visual Studio Community 2015, и мы хотели бы использовать встроенные функции git VS2015 для управления нашим проектом. Мы хотели бы, чтобы каждый пользователь имел локальный репозиторий git на своем ноутбуке, а затем поместил удаленный репозиторий на сетевой диск, который мы отправляем / извлекаем. Я хотел бы знать правильный рабочий процесс для этой конкретной установки, используя встроенные функции git VS2015. Мы НЕ хотим использовать VS online или Team Foundation Version version или версию git для командной строки (из-за характера нашей работы у нас не будет доступа к Интернету, и у нас нет доступа к командной строке).

Я попробовал несколько вещей, чтобы заставить это работать без всякой удачи.

Сначала я открываю решение в VS2015, затем нажимаю файл -> добавить в систему управления версиями -> git, который создает локальный репозиторий. Затем я фиксирую свои файлы в локальном хранилище. Пока проблем нет.

Далее я хочу создать удаленный репозиторий на сетевом диске. В Team Explorer для проекта, я нажимаю на синхронизацию, и он запрашивает URL для пустого репозитория Git. Я ввожу папку на сетевом диске, которую хочу использовать, но получаю сообщение об ошибке, в котором говорится, что не удалось найти репозиторий, возможно, потому что папка пуста. Может быть, я скучаю по нему, но в VS2015 нет способа создать пустое git-репо.

Поэтому, чтобы попытаться создать пустое git-репо, я перехожу в File-> new-> Repository и создаю git-репозиторий в папке на сетевом диске. Я думаю, введите это в Синхронизация -> URL, и я получаю другую ошибку. Эта ошибка говорит о том, что локальное push-уведомление еще не поддерживает размещение в репозиториях, не являющихся открытыми. Создание нового репозитория в VS2015, похоже, не создает пустой репозиторий.

Затем я попытался клонировать расположение моего локального репозитория в расположение папки сетевого диска, что сработало. Затем я захожу в настройки локального репозитория и добавляю удаленный репозиторий к удаленным, который теперь отображается в окнах проводника ветвей. Затем я изменяю свой код, перехожу к изменениям и выбираю Commit и Push. На этот раз я получаю еще одну ошибку: «Невозможно нажать, потому что текущая ветвь не отслеживает удаленную ветвь, публикует изменения на удаленной». Когда я щелкаю правой кнопкой мыши по локальной ветке master, опция публикации становится недоступной, поэтому я не могу ее опубликовать.

Чтобы обойти эту проблему, я щелкаю правой кнопкой мыши по удаленной / основной ветке и выбираю новую локальную ветку с выбранной опцией «Отслеживать удаленную ветвь (настроить для push и pull с удаленной / главной)». Я называю эту ветку local_master, которая сейчас является опубликованной веткой. Я предположил, что опция, которую я выбрал выше, позволит мне теперь перенести и перенести изменения из моей новой опубликованной ветви local_master в удаленную / главную ветку. Когда я делаю изменения в local_master, фиксирую, а затем пытаюсь нажать, я вместо этого получаю эту ошибку: «Локальное нажатие (пока) не поддерживает передачу в не-голые репо». Затем я щелкаю правой кнопкой мыши на ветке remote / master и пытаюсь слиться с моим local_master в remote / master, который говорит, что он работал успешно, но мои изменения кода отсутствуют в remote / master.

Я потратил почти 8 часов, пытаясь заставить это работать и исследуя другие решения, и не добился успеха, и я почти сошел с ума. Кто-нибудь знает, как создать удаленный репозиторий на сетевом диске, а затем перенести / вытащить из локального репозитория в удаленный репозиторий, используя встроенные элементы управления git в VS2015?

2

Решение

Это мой текущий рабочий процесс:

  1. Установите флажок «Создать проект в Visual Studio» с пометкой «Создать новый Git-репозиторий».
  2. Сделайте локальный коммит, с сообщением коммита «Initial commit» или подобным.
  3. Откройте каталог проекта и найдите подкаталог .git. Этот каталог по умолчанию скрыт, поэтому вам нужно включить «Показать скрытые файлы и папки» в проводнике Windows, чтобы увидеть его.
  4. Щелкните правой кнопкой мыши .git, Свойства -> Снимите флажок «Скрытый», нажмите Применить.
  5. Переименуйте каталог в YourProjectName.git
  6. редактировать YourProjectName.git\config в текстовом редакторе (я рекомендую Notepad ++, потому что он не беспокоится о сохранении файла без расширения, что необходимо. Этот файл не могу сохраниться как config.txt)
  7. В config:
    Удалить строку logallrefupdates = true
    Изменить строку bare = false в bare = true
    Сохранить файл как config (без расширения файла !!)
  8. Скопируйте весь YourProjectName.git каталог в общей папке, где вы хотите разместить главный репозиторий.
  9. Удалите свою локальную копию хранилища.
  10. Откройте Git Bash (или «Действия» -> «Открыть командную строку» в VS 2015 Team Explorer) и перейдите в каталог, где вы хотите разместить каталог проекта. например cd C:\Users\YourUsername\Documents\Projects,
  11. Клонируйте репозиторий из его сетевого пути:
    git clone //repo-server/c/CompanyRepos/YourProjectName.git

Очевидно, что многие из этих шагов могут быть выполнены немного по-другому или не в порядке, но важная концепция состоит в том, чтобы инициализировать пустой репозиторий на сетевом ресурсе, а затем локально клонировать его в качестве полного репозитория.

Причина, по которой вы удаляете существующий репо и клон с общего сетевого ресурса, заключается в том, чтобы убедиться, что все ваши пульты настроены правильно.

config правки, рекомендованные выше, являются лишь одним из подходов к преобразованию существующего полного репозитория в пустой репозиторий. В качестве альтернативы, если вы создаете новый репозиторий с нуля, вы можете просто ввести «git init —bare» в командном окне. Однако стоит отметить, что «git init» и VS 2015 «Create new Git repository» не совсем совпадают; Visual Studio добавляет некоторые дополнительные параметры после инициализации репо. Эти настройки не являются жизненно важными, но я решил, что стоит отметить несоответствие.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]