Как заставить работать GIT в моем случае? - PullRequest
0 голосов
/ 18 февраля 2012

У меня вопрос по поводу Git.В месте, где я работаю, работают 2 разработчика: я и еще один парень.Мы оба разрабатываем проект VB.NET с использованием Visual Studio 2008, и весь код и документы компании хранятся на центральном локальном сервере.

Итак, на данный момент, если нам обоим нужно работать над одним проектом, мы копируем код, хранящийся в Server1:/Code, в нашу локальную папку документов и просто сообщаем друг другу, какие файлы мы используем, чтобы мы не работалина одни и те же файлы.В конце дня мы копируем наши биты обратно на сервер (убедившись, что я не перезаписываю его файлы и наоборот).

Я посмотрел на Git, и, похоже, он решит проблему типа «Не меняйте код FileA, потому что я его использую» и позволит нам работать над одним проектом одновременновремя: то есть мы оба получаем копию кода с сервера Server1 и разрабатываем и объединяем оба в конце дня обратно на сервер (или я ошибаюсь?).

Теперь я прочитал части книги ProGit, и я понял, куда вы добавляете файлы и делаете коммиты, но не уверен, как мы оба сможем использовать его одновременно.

Несколько вопросов здесь:

  1. Где я буду создавать репозиторий Git?Код хранится в Server1/Code, а в Code у нас есть различные проекты, поэтому я думаю, что мне нужно создать хранилище в Server1/Code?
  2. После того, как я создаю хранилище, как мы можем получить копию, скажем, проекта A, хранящегося в Server1/Code/ProjectA?Мы просто скопируем, вставим папку или используем Git?
  3. Поскольку каждый из нас будет иметь свою собственную копию в My Documents и работать с ней в течение дня, как мы будем объединять файлы в конце, чтобы ничего не потерялось?Допустим, я создал новую форму в VS2008 с кнопкой и кодом позади нее, а другой парень изменил код где-то еще?Или, например, я добавляю некоторый код в FormA, и он тоже добавляет некоторый код в FormA?Как мы объединяем их в конце?

Как я уже сказал, я установил расширения git и git на свой компьютер дома и поиграл с ним, и не возражаю против использования git bash (командная строка) или git GUI.

Любая помощь будет с благодарностью, ребята.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2012

Учитывая распределенную природу Git, существуют буквально сотни различных рабочих процессов, так что это только один пример.

Другой пример популярного рабочего процесса описан здесь

Где я буду создавать GIT-репозиторий? Код хранится в Server1 / Code и в Code у нас есть различные проекты, так что я должен создать хранилище в Server1 / Code?

Вы должны создать хранилище на Сервере1 / Код:

git init && 
git add . && 
git commit -am "Initial commit"

Выше добавлено все в хранилище (возможно, вы захотите исключить некоторые файлы, поэтому сначала поместите то, что вы хотите исключить из хранилища, в файл .gitignore в корне проекта)

После того, как я создаю хранилище, как мы можем получить копию, скажем, Проект A хранится в Server1 / Code / ProjectA? Будем ли мы просто скопировать вставить папку или использовать GIT?

Если вы используете общий ресурс, вы можете клонировать его в режиме git file:

git clone file:////<host>/<share>/<path>

Потому что каждый из нас будет иметь свою собственную копию в Моих документах и ​​работать над эта копия в течение дня, как мы будем объединять файлы в конце чтобы ничего не потерялось? Допустим, я создал новую форму в VS2008 с кнопкой и кодом позади нее, а другой парень изменил какой-то код где-то еще? Или, например, я добавляю код FormA и он тоже добавляет код в FormA? Как мы объединяем их в конец

Обычно вы работаете в местном филиале:

git checkout -b local_feature_branch

Когда вы закончите, вы можете увидеть, что изменилось на "сервере", используя git fetch origin. Это только обновит ваше представление о том, что произошло на сервере, но не отменит изменения.

Когда вы будете готовы отправить свои изменения на сервер:

1) Зафиксировать изменения

git commit -am "My changes"

2) Отменить изменения на сервере в вашем местном филиале:

git checkout master && git pull origin master

3) Слияние или перебазирование вашей функциональной ветви в локальную копию мастера

Объединить:

git merge local_feature_branch

Rebase:

git checkout local_feature_branch && 
git rebase master && 
git checkout master && 
git merge local_feature_branch

Ознакомьтесь с разницей между слиянием и перебазированием в ответе ниже:

Рабочий процесс Git и ребаз против вопросов слияния

Если есть конфликт (например, если вы оба редактируете одну и ту же форму и т. Д.), Git сообщает вам, что произошел конфликт слияния и какие файлы нужно слить. После слияния вы добавляете объединенный файл:

git add merged_file

И совершить:

git commit -am "Merged with master"

Наконец, вы отправляете изменения обратно на «сервер»:

git push origin master
0 голосов
/ 18 февраля 2012
  1. У вас будет три репозитория Git.Один центральный репозиторий (голый) и один закрытый для каждого разработчика.Разместите центральный репозиторий на сервере где-нибудь, поместите частные копии на свои жесткие диски.

  2. Когда вы хотите получить копию кода, вы используете git clone.Когда вы хотите обновить свою копию кода, вы используете git pull или git fetch, а затем git merge (это тоже самое).Не копируйте папку с Git-репозиторием вручную.

  3. Всякий раз, когда вы заканчиваете вносить логические изменения в проект, отправляйте изменения в центральное хранилище.Если другой разработчик нажал первым, вы получите конфликт.Таким образом, вам придется вытянуть изменения других разработчиков, объединить их с вашим кодом (или перебазировать, если хотите) и нажать еще раз.Если вы оба внесете изменения в один и тот же фрагмент кода, вы получите конфликт слияния при слиянии на локальном компьютере.Вы разрешаете объединение локально, а затем отправляете готовую (проверенную!) Версию на центральный сервер.

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

В качестве альтернативы вы можете перейти в отдельную ветку на центральном сервере, если у вас есть что-то в процессе выполнения.

0 голосов
/ 18 февраля 2012

Если вы начинаете с контроля версий, я бы предложил начать с SVN. Это просто проще.

http://www.visualsvn.com/server/ - это позволит вам создать хранилище за считанные минуты.

  1. Вы можете создать хранилище где угодно. Затем поместите код, который у вас уже есть, в хранилище.
  2. После этого установите Tortoise SVN и / или SVNMonitor для обновления из / push в репозиторий. Впервые вы извлекаете код из хранилища. Он загрузит весь код в указанную вами директорию.
  3. Используя SVN, вы также можете заблокировать файл для редактирования. Таким образом, другой человек не сможет редактировать его одновременно. Но это не предложенный способ работы. Обычно слияния не являются проблемой, потому что большую часть времени вы будете работать над другими вещами, а не над коллегой. Но если случится так, что вы отредактируете тот же файл, первый человек успешно пройдет регистрацию, а другой получит сообщение, что кто-то изменил этот файл. Затем он должен будет обновить свою версию файла версией из хранилища и выполнить слияние и регистрацию. Но часто слияния происходят автоматически.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...