git eclipse разрешение конфликтов также приводит к повторной фиксации неизмененных изменений - PullRequest
1 голос
/ 20 сентября 2011

Я начал использовать git (на github) и у меня возник вопрос о рабочем процессе новичка.Заранее извиняюсь, если описание многословно, но я хотел описать то, что я думаю, поскольку я прохожу через процесс, чтобы вы могли исправить меня.Я также использую плагин Eclipse EGIT, который, как я понимаю, никогда не будет так же хорош, как использование командной строки, а просто терпит меня.

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

  1. Мой партнер и я начинаем загружать последний код в наши соответствующие рабочие репозитории.Нет проблем.
  2. Я изменяю FileA и FileB, добавляю, фиксирую и нажимаю их обоих.Никаких проб.
  3. Тем временем мой партнер изменяет FileA, а затем пытается получить мои обновления.
  4. Eclipse выдает ему ошибку : конфликт CheckOut с FileA
  5. Мы отправляемся в git bash land и получаем более полезное сообщение после выполнения git pull:

    error: Ваши локальные изменения ... записаны слиянием: FileA.Пожалуйста, передайте изменения или спрячьте их до того, как вы сможете объединиться.

  6. ОК, достаточно справедливо.Он фиксирует свои изменения (FileA) и пытается выполнить повторную попытку (через Eclipse).

  7. Он получает сообщение о конфликте FileA.Хорошо, это ожидается.Теперь он переходит к разрешению конфликта в FileA и делает git add для FileA, чтобы указать, что он разрешен.

  8. Теперь он готов совершить и нажать.Он ожидает, что его объединенные изменения в FileA будут перенесены.Но теперь, вот часть, которую я не понимаю.Несмотря на то, что он вообще не изменял FileB, Eclipse определяет, что он является частью его коммита по умолчанию, поэтому ему необходимо вручную снять флажок, чтобы избежать повторной отправки FileB и, таким образом, избегать нажатия FileB (поскольку в него не было внесено никаких изменений).Но даже в этом случае FileB выталкивается вверх по течению.В результате он не только нажимает на FileA, но и на FileB.

Я хотел бы знать, правильно ли мы поступаем, и поскольку мы, вероятно, не, совет приветствуется.

1 Ответ

0 голосов
/ 20 сентября 2011

Может быть, в пункте 6. Ваш коллега делает коммит, который содержит все изменений, которые он сделал до попытки вытащить? Это может произойти, если он использует что-то вроде commit -a. Кроме того, Eclipse может использовать поведение по умолчанию, просто добавляя все изменения ко всем файлам в коммит. Эти изменения могут включать файлы A и B.

Чтобы убедиться, что только изменения в FileA фиксируются, следует использовать что-то вроде этого:

git add FileA
git commit         # Notice, no '-a' option

Не уверен, что Eclipse допускает этот вид мелкозернистого контроля над тем, какие изменения есть, а какие нет.

...