Я хотел бы добавить несколько слов. Недавно я заметил очень странное поведение в git. Из-за этого у моей команды были большие проблемы. Я не знаю, как это произошло, но, похоже, история в моем репо непоследовательна.
Маленькая иллюстрация:
совершают XXXXXXXX:
линия "бар" был добавлен в файл Foo.
... работа продолжается ...
много фиксаций позже (скажем, около 100):
линии «бар» больше не существует в этом файле !!
Исследование:
1.I осмотрена история файла с:
журнал мерзавец Foo и gitk Foo
Я даже по сравнению с последовательной сгустки каждой фиксации с внешним инструментом (gvimdiff). Интересно, что я нашел две коммиты (назовем их YYY и ZZZ). Blob файла foo из commit YYY состоял из «бара», но blob из ZZZ этого не делал.
Когда я проверил commitdiffs этих коммитов с gitk (и gitweb), я заметил, что нет операции удаления строки «bar» в ZZZ. Возможно ли, что между ними было какое-то сражение и растворено в воздухе?
Или, может быть, фиксация ZZZ только что удалила мою строку и инструмент diff, встроенный в git (или gitk), сломан?
2.I искал фиксации, которые могли бы удалить эту строку «мерзавец войти -S», что-то вроде:
мерзавца войти -S'bar»- обув
Оказывается, что эта линия никогда не удалялся. На самом деле это было добавлено два раза. Первый раз, когда он был введен в проект и второй раз, когда он снова был добавлен в качестве срочного исправления.
Мне очень нравится использовать git и даже убедить нескольких друзей использовать его, но если такая магия будет продолжаться, мне придется начать поиск альтернатив.
Как член команды получает свои изменения и продвигается? Я сомневаюсь, что git - «потерять» данные. Я думаю, что более вероятно, что кто-то делает что-то вроде слияния изменений и просто принимает их изменения ... – hvgotcodes 2010-12-15 20:40:24
Если вы проверите каждый из различий между версиями, вы, вероятно, увидите, что предыдущие изменения были отменены. Это наиболее распространенная причина потери данных, вызванная тем, что люди совершают плохие коммиты. Редактор визуализации git или графический интерфейс git могут помочь отслеживать их. – tadman 2010-12-15 20:43:19
@hvgotcodes - Он говорит, что он «совершает, тянет, толкает». Итак, вы говорите, что когда возникают конфликты слияния, он может просто сказать: «Я побеждаю?» – 2010-12-15 20:45:16