Мы столкнулись с действительно странной проблемой, которую очень сложно объяснить, я сделаю все возможное, чтобы проиллюстрировать.
Энди фиксирует и помещает изменения в файл build.ps1
.
Боб фиксирует другиефайлы и тянет.
Боб имеет некоторые конфликты.Git говорит ему, что в файле build.ps1
есть изменения, что я нахожу странным, потому что только Энди изменил его, но хорошо, почему бы и нет.
Боб исправляет конфликты, зная, что он не изменил этот файл,-страивает его до его слияния.Он не должен был этого делать, но я хочу понять, что произойдет дальше.
Проблема в том, что при этом файл был возвращен в предыдущее состояние и, по-видимому, удален его файл.
В журнале: a213826
- коммит Боба, который он пытается объединить;b2067fa
- это коммит Энди, который исчезает, а 81bcc94
- это коммит слияния.
> git log --pretty=format:'%h - %d %s (%cd) <%an>' --abbrev-commit
* 753c504 - (HEAD) ... (10/17/18 10:19:52) <Clark>
... other commits
* 81bcc94 - Merge (10/16/18 18:53:09) <Bob>
* b2067fa - build file (10/16/18 17:19:32) <Andy>
... other commits
* a213826 - members selection (10/16/18 17:35:46) <Bob>
... other commits
В a213826
мы видим, что Боб изменил некоторые файлы:
> git show --name-status a213826
commit a2138265ba464afed6955f7a2976b9d868c6449e
Author: Bob
Date: Tue Oct 16 17:35:46 2018 +0200
members selection
M Viewer3D.DataAccess/DataAccess.cs
M Viewer3D.DataAccess/IDataAccess.cs
M Viewer3D/Content/view-panel.css
M Viewer3D/Controllers/DirectoryController.cs
M Viewer3D/Controllers/NotesController.cs
M Viewer3D/Scripts/class-panel.js
M Viewer3D/Scripts/view-panel-note-form.js
M Viewer3D/Views/Home/_PanelNotes.cshtml
В 81bcc94
мы видим, что в слиянии Боб разрешил некоторые конфликты, но файл build.ps1
не был изменен:
> git show --name-status 81bcc94
commit 81bcc94cbe26859ca6b02d2908f6afc64aec1701
Merge: a213826 b2067fa
Author: Bob
Date: Tue Oct 16 18:53:09 2018 +0200
Merge
MM Viewer3D.DataAccess/DataAccess.cs
MM Viewer3D.DataAccess/IDataAccess.cs
MM Viewer3D/Content/view-panel.css
MM Viewer3D/Controllers/NotesController.cs
MM Viewer3D/Scripts/view-panel-note-form.js
Однако, Tortoise Git рассказывает совсем другую историюи показать файл build.ps1
с изменениями!

В файле git log
фиксация b2067fa
больше не отображается:
> git log -p -- .\build_psake.ps1
commit 2d5eef1d1a13508621afe99bad8a2af05f3cc298
Author: Andy
Date: Tue Sep 4 15:25:12 2018 +0200
changes build path
(some diff)
commit 23dd900f71e88053b333b886491a2b5a9b971291
Author: Clark
Date: Mon Jun 18 09:19:34 2018 +0000
...
Однако, если мы log --follow
, коммит появится снова:
> git log --follow -p -- .\build_psake.ps1
commit b2067fac01e9b8d8ee4d6a88a91f4fd994efdf9e
Author: Andy
Date: Tue Oct 16 17:19:32 2018 +0200
build file
(some diff)
commit 2d5eef1d1a13508621afe99bad8a2af05f3cc298
Author: Andy
Date: Tue Sep 4 15:25:12 2018 +0200
changes build path
....
Итак, мои вопросы:
- Почему Gitговорит Бобу, что файл А изменился?Разве соответствующий коммит не был слит молча?
- Что заставило коммит исчезнуть из "простого журнала" файла, а не из "журнала отслеживания"?
- Почему git сообщаетмне что файл не был изменен в журнале, но Tortoise Git говорит мне обратное?
Пожалуйста, помогите мне разобраться во всем этом!