Git pull --rebase丢失了我的提交

4

我对一个文件做了一个非常小的修改。

只有一行代码被更改,修改如下:

@@ -1,3 +1,3 @@
{
-  "cordova-cli": "5.2.0"
+  "cordova-cli": "5.4.1"
}

我提交了更改并进行了拉取变基

git add taco.json
git commit -m "updated the cordova cli version"
git pull --rebase

现在当我执行git log时,我看不到我的修改。有人在另一个提交中进行了完全相同的更改。Git是否识别了这一点,并消除了我的提交?

我仍然可以在git reflog中看到它。
我本来期望会出现合并冲突,而不是完全让我的提交消失。

下面是git log和git reflog的输出:

git log --oneline
d8cb5c3 removed upload from gulp task
0ed5d5b updated analytics codeanalytics
901f724 minor style changes to search buttons


git reflog
d8cb5c3 HEAD@{0}: rebase finished: returning to refs/heads/dev
d8cb5c3 HEAD@{1}: pull --rebase: checkout d8cb5c341c7b08d6a9b43d89198171596d0c4234
f931b4e HEAD@{2}: commit: updated cordova cli version
2个回答

6

如果你的提交与另一个提交完全相同且没有更改(当然也没有冲突),那么是的。Git不会应用该提交,因为它什么都没做。

尝试“cherry-pick”此提交,您将看到以下消息:

nothing to commit, working directory clean
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

git commit --allow-empty

在rebase期间,git没有显示任何消息,只是删除了提交。

我以为可能是这样,但看到它突然消失还是有点令人担忧。 - Dismissile

1
冲突是指同一行有不同的更改,但更改是相同的情况下出现的局面 - 没有冲突。
要在日志中提交您的提交,您必须编辑其他带有更改的提交,但由于它已经在上游 - 这不是一个好主意,因为历史重写涉及强制推送并可能导致工作丢失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接