У нас была та же проблема: Dev A внес изменения.Dev B изменил что-то еще.После того, как Dev B выдвинул свои изменения, изменения, которые сделал Dev A, «исчезли».Изменение, которое внес Dev B, было несколько недель назад, но казалось, что никто не заметил потери изменений Dev A. до сих пор.
Реальная причина, по которой изменения "исчезли", заключалась в том, что инструмент, который мы использовали для просмотра истории (TFS) показывал неверную версию истории.Когда мы посмотрели с помощью различных инструментов (SmartGit и SourceTree), мы увидели, что действительно произошло: кто-то перезаписал изменение, пытаясь исправить конфликт слияния, и перезапись была в простом виде.
Итак, это не был gitэто теряло изменения, это был инструмент, который мы использовали, чтобы дать нам ложное представление об истории.Просто что-то, на что нужно обратить внимание.
Мы используем git уже год, и 99% времени, когда что-то «не так» с git, на самом деле это было вызвано кем-то, кто на самом деле не понималмерзавец.Единственный раз, когда он «был git», был проблемой CRLF, но на самом деле это было потому, что мы не знали git достаточно хорошо и (благодаря SO) с ним было легко справиться.
Так что всегда смотрите внимательно ивы, вероятно, обнаружите, что проблема сводится к тому, что кто-то не понимает git и делает то, чего не должен был делать.