Я и коллега столкнулись с этим сценарием в Git, где файлы пропадали между 2 коммитами, но мы не видим никакого вида «пути удаления / файла / файла в режиме 100644».Основываясь на моем понимании Git, я не понимаю, как это возможно.
Вот упрощенная информация трассировки.Дайте мне знать, если какой-либо дальнейший вывод поможет расследованию, и я с радостью добавлю.
Мы нашли 2 последовательных коммита в одной ветви:
git log --oneline
Это дает:
Примечание 1423249
и 341c603
.Теперь я проверю каждый из этих коммитов, чтобы показать, что один файл примера (их больше) присутствует в предыдущем коммите 341c603
, но отсутствует в следующем коммите 1423249
.
341c603
➜ git checkout 341c603
Note: checking out '341c603'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at 341c603 v0.1.230
➜ git log --stat --summary -- app/components/BreadcrumbNav/index.js
commit f88f71e4bec82a004626d2e1326bb1a1544675b3
Author: panguoliang <panguoliang@dae.org>
Date: Wed May 8 13:31:05 2019 +0800
ADD fiat module
app/components/BreadcrumbNav/index.js | 41 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
create mode 100644 app/components/BreadcrumbNav/index.js
➜ ls -l app/components/BreadcrumbNav/index.js
-rw-r--r-- 1 wang.boyang staff 888 May 10 10:10 app/components/BreadcrumbNav/index.js
Это есть в 341c603
.Он был создан в старом коммите.Теперь переходим к 1423249
1423249
➜ git checkout 1423249
Previous HEAD position was 341c603 v0.1.230
HEAD is now at 1423249 fix websocket, subscribe to current symbol
➜ git log --stat --summary -- ./app/components/BreadcrumbNav/index.js
(empty output)
➜ ls -l app/components/BreadcrumbNav/index.js
ls: app/components/BreadcrumbNav/index.js: No such file or directory
Его там нет!Итак, каковы изменения в 1423249
?Был ли удаленный файл app/components/BreadcrumbNav/index.js
удален в 1423249
?
➜ git show --stat 1423249
commit 1423249134941968692d2094c64369017838d393 (HEAD)
Author: Wang Boyang <boyang@dae.org>
Date: Thu May 9 12:59:59 2019 +0800
fix websocket, subscribe to current symbol
.eslintrc.js | 2 ++
.prettierrc | 14 ++++++---
app/containers/BarBox/actions.js | 24 ++++++--------
app/containers/BarBox/constants.js | 8 ++---
app/containers/BarBox/index.js | 22 ++++++-------
app/containers/BarBox/reducer.js | 18 ++++-------
app/containers/BarBox/saga.js | 20 ++++++------
app/containers/BarBox/selectors.js | 5 ++-
app/containers/BarBox/styles.js | 5 ++-
app/containers/TradePage/index.js | 116 ++++++++++++++++++++++++++++----------------------------------------
10 files changed, 102 insertions(+), 132 deletions(-)
Абсолютно нет изменений, связанных с отсутствующим файлом, app/components/BreadcrumbNav/index.js
.Итак, что происходит?
Редактировать
Ниже приведен упрощенный вывод из git log --graph
:
* commit 47750dc0059d503dcd73de767fe9a1914070b6b9
|\ Merge: d1a0f6e 2115249
| | Author: justinji <justin5562587@gmail.com>
| | Date: Thu May 9 17:40:01 2019 +0800
| |
| | resolve conflicts
| |
| * commit 2d8835e30a9a27f9eec687de573e4a77e66ed69a
| |\ Merge: 324857a 341c603
| | | Author: Wang Boyang <boyang@dae.org>
| | | Date: Thu May 9 13:06:22 2019 +0800
| | |
| | | Merge remote-tracking branch 'origin/test' into test
| | |
| | * commit 341c60334919930ee5f731cae3660c80aefb2ca1
| | | Author: panguoliang <panguoliang@dae.org>
| | | Date: Thu May 9 12:03:01 2019 +0800
| | |
| | | v0.1.230
| | |
| | |
| | * commit 66eaf470248a01b6d7861f1b319335255363195c
| | |\ Merge: 5ec1650 63e528b
| | | | Author: panguoliang <panguoliang@dae.org>
| | | | Date: Thu May 9 12:00:48 2019 +0800
| | | |
| | | | lint
| | | |
| | * | commit 9f8b93645851d98b1ab08264de8700a0e0dff47c
| | | | Author: panguoliang <panguoliang@dae.org>
| | | | Date: Thu May 9 11:58:41 2019 +0800
| | | |
| | | | ADD Fiat deposit
| | | |
| | | |
| * | | commit 1423249134941968692d2094c64369017838d393
| | | | Author: Wang Boyang <boyang@dae.org>
| | | | Date: Thu May 9 12:59:59 2019 +0800
| | | |
| | | | fix websocket, subscribe to current symbol
| | | |
| * | | commit 6d2c1073689140b75758d0e008af183340f1842b
| |\ \ \ Merge: f730698 63e528b
| | | |/ Author: Wang Boyang <boyang@dae.org>
| | |/| Date: Thu May 9 10:39:23 2019 +0800
| | | |
| | | | Merge remote-tracking branch 'origin/test' into test
| | | |
Выводы: в (и после) коммит слияния 2d8835e30a9a27f9eec687de573e4a77e66ed69a
, файлы потеряны.вывод cat-файла:
➜ git cat-file commit 2d8835e30a9a27f9eec687de573e4a77e66ed69a
tree a46f997a76ff403d1ec0567913722787d72bf9f6
parent 324857aa9a26852a2c5699650366ac7797a85ac2
parent 341c60334919930ee5f731cae3660c80aefb2ca1
author Wang Boyang <boyang@dae.org> 1557378382 +0800
committer Wang Boyang <boyang@dae.org> 1557378382 +0800
Merge remote-tracking branch 'origin/test' into test
Edit2
Инструмент difflame дает следующий вывод:
➜ ~/Projects/difflame.py 341c603 2d8835e30a9a27f9eec687de573e4a77e66ed69a -- app/components/BreadcrumbNav/index.js
Processing line 48/48
diff --git a/app/components/BreadcrumbNav/index.js b/app/components/BreadcrumbNav/index.js
deleted file mode 100644
index bf18d9d..0000000
--- a/app/components/BreadcrumbNav/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
341c603: v0.1.230
-341c603 (panguoliang 2019-05-09 12:03:01 1 ) /**
-341c603 (panguoliang 2019-05-09 12:03:01 2 ) *
-341c603 (panguoliang 2019-05-09 12:03:01 3 ) * BreadcrumbNav
-341c603 (panguoliang 2019-05-09 12:03:01 4 ) *
-341c603 (panguoliang 2019-05-09 12:03:01 5 ) */
Есть ли способ узнать почему слияние было сделано таким образом (т.е. удаление файлов), чтобы его можно было избежать в будущем?