2016-01-21 2 views
5

Мы работаем через визуальную студию 2015 с git. У нас есть центральный репозиторий (GitLab) с единственным «мастером» филиала. Два человека клонировали репозиторий.Git: merge скрывает определенные изменения

  1. Первый парень добавил в файл "test-new-file-v.txt" файл. Он изменил файл решения (.sln) и изменил строку «VisualStudioVersion = 14.0.23107.0». Затем он фиксируется в вашем локальном репозитории, а затем нажимает эту фиксацию в центральном репозитории (GitLab). После этого, мы наблюдали за эту фиксацию в центральном хранилище (GitLab): enter image description here

  2. Второй парень добавил файл «testgit.txt» в растворе. Он также изменил файл решения (.sln), но не изменил строку VisualStudioVersion. Затем он хочет вытащить центральный репозиторий (GitLab) перед нажатием.

  3. У второго парня был конфликт. Он сливается через визуальную студию 2015 года и видит, что другой парень ошибся при изменении «VisualStudioVersion = 14.0.24720.0» на «VisualStudioVersion = 14.0.23107.0». Второй парень хочет оставить строку «VisualStudioVersion = 14.0.24720.0» без изменений. Он выбрал для этой строки локальное состояние «VisualStudioVersion = 14.0.24720.0» и совершил слияние. После этого он нажимает эти две коммиты в центральном репозитории (GitLab).
  4. После этого мы наблюдали историю и изменения в центральном хранилище (GitLab) и увидели, что совершить слияние со второго парня: enter image description here

Мы видим, что в центральном хранилище (GitLab) файл решения содержит строка «VisualStudioVersion = 14.0.24720.0», и это правильно, но мы не видим, чтобы эта строка заменяла строку «VisualStudioVersion = 14.0.23107.0», потому что фиксация из первого парня содержит эту строку и должна быть до слияния.

Мои вопросы:

  1. Является ли это правильное поведение? Я ожидаю увидеть в объединении, что строка «VisualStudioVersion = 14.0.23107.0» изменена на «VisualStudioVersion = 14.0.24720.0».
  2. Как я могу достичь поведения, в котором я могу видеть все изменения?

ответ

2
  1. Я предполагаю, что он не получил изменения, прежде чем его совершить на главной ветви, так локально он может не иметь изменения, которые проталкивания. Это предотвращает возврат кода, если ваша ветка устарела.

  2. Я бы предложил не совершать изменения в мастер. Создайте отдельный локальный ветвь и используйте запросы на загрузку в master.

Изучите стратегию разветвления git, чтобы ваши филиалы были упорядочены.

Git Branching Model