我在分行foo.bar
工作。我在文件d379865
和其他一些文件中做了一些工作。我将其提交给issue
。
然后结帐到分行otherIssue
,将issue
合并到issue
并推送到上游。
之后 dev1 在其他文件中对其本地foo.bar
执行某些操作而不更改4fb65b2
。 (提交issue
)。并将上游的issue
合并到他的foo.bar
。之后,我的更改消失了。
我使用git show c1c25b5
和git show 4fb65b2
* | c1c25b5 - (9 hours ago) NO CHANGES Merge branch 'issue' of repo:project into issue - dev1
|\ \
| * | 4c95813 - (14 hours ago) MY CHANGES IS STILL HERE - dev2
| * | a08ccdb - (14 hours ago) Merge branch 'otherIssue' into issue - dev2
| |\ \
| | |/
| | * d379865 - (14 hours ago) otherIssue: MY CHANGES IS HERE - dev2
| | * 521d54d - (19 hours ago) otherIssue: some changes - dev2
* | | 4fb65b2 - (11 hours ago) issue: somechanges - dev1
|/ /
* | b3baeed - (19 hours ago) issue: - dev1
看不到任何变化。
我的图表:
$ MERGE_COMMIT=c1c25b5
$ BRANCH_ONE=c1c25b5^1
$ BRANCH_TWO=c1c25b5^2
$ COMMON_ANCESTOR=b3baeed
$ FILE_WITH_MISSING="path/to/foo.bar"
$ git show $MERGE_COMMIT | grep $FILE_WITH_MISSING | wc -l
0 # Why??
$ git diff $MERGE_COMMIT..$COMMON_ANCESTOR -- $FILE_WITH_MISSING | wc -l
0
$ git diff $BRANCH_ONE..$COMMON_ANCESTOR -- $FILE_WITH_MISSING | wc -l
0
$ git diff $BRANCH_TWO..$COMMON_ANCESTOR -- $FILE_WITH_MISSING | wc -l
210
$
$ git log -p $COMMON_ANCESTOR..$BRANCH_ONE | grep "$FILE_WITH_MISSING" | wc -l
0
$ git log -p $COMMON_ANCESTOR..$BRANCH_TWO | grep "$FILE_WITH_MISSING" | wc -l
3
$
我可以毫无问题地恢复更改,但我无法理解这怎么可能发生?
{{1}}
有问题" Git; code disappeared after merge",但没有对此事件的解释。