为什么另一个程序看不到我的本地(未推送)提交?

Why can't another programm see my local (unpushed) commit?

我已经在VS2015中提交了,但是我还没有推送它。然后我用 Git 扩展进行了一次获取,我可以看到,我在远程分支后面有 2 个提交。但是 Git 扩展没有显示我的本地提交。当我在 Git Extension 中搜索提交哈希时,他也没有找到它。为什么?

git status 也只告诉我我在远程分支后面有两个提交。 git log @{u}.. 在控制台上不显示任何内容。 git log origin/master..HEAD 只显示从旧的远程获取的提交。

我想做一个变基,但现在我不知道这是否是个好主意,如果 Git 扩展程序看不到我的本地提交。

尝试使用 git reflog 查看本地存储库中的历史更改。

如果您在那里找不到您的提交 - 请检查您是否在不同的地方有两个存储库副本。

git reflog 告诉我:

1d63279 HEAD@{0}: checkout: moving from 9af729af1fbb639a5616528a31e7773f99f564d3 to refactor
9af729a HEAD@{1}: commit: My missing commit
1d63279 HEAD@{2}: checkout: moving from 0e302fee7cbb0ba1306a75e024e324291e3e361f to 1d6327972bd9ac1a585d947e634b69f891a78325
0e302fe HEAD@{3}: checkout: moving from refactor to 0e302fee7cbb0ba1306a75e024e324291e3e361f
1d63279 HEAD@{4}: commit: My old commit

看来我同时检查了一个特殊的提交并进行了处理。我对此的解决方案是制作 patch.

// create patch
git format-patch -1 9af729af1fbb639a5616528a31e7773f99f564d3
// show stats
git apply --stat 0001-My-Commit-Message.patch
// check for error before applying
git apply --check 0001-My-Commit-Message.patch
// three-way merge and apply the patch
git am -3 < 0001-My-Commit-Message.patch

现在一切正常,我可以继续工作了。但是我不知道旧的提交会发生什么。