Git слияние с разрешением конфликтов делает предыдущий коммит исчезает - PullRequest
0 голосов
/ 17 октября 2018

Мы столкнулись с действительно странной проблемой, которую очень сложно объяснить, я сделаю все возможное, чтобы проиллюстрировать.

Энди фиксирует и помещает изменения в файл 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 merge

В файле 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 говорит мне обратное?

Пожалуйста, помогите мне разобраться во всем этом!

1 Ответ

0 голосов
/ 17 октября 2018

Во время слияния Боб unstaged diffs от Энди на build.ps1, не так ли?

Так что, если вы посмотрите на основную ветку, исходящую от Боба, больше нет изменений от коммита Энди,Если бы вам пришлось смотреть с точки зрения Энди, вы бы увидели, как Энди добавляет, а Боб удаляет изменение.

Возможно, на боксе Боба произошли некоторые локальные изменения, возможно, окончания строк?

...