2

我遇到了一个我似乎不明白的奇怪问题。我有两个本地 git 分支,它们都指向同一个遥控器。本地分支机构是主人租户,我在我的.git的 ws中有以下配置

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@egitrepo:project.git
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "tenant"]
    remote = origin
    merge = refs/heads/master

我这样做是为了在两个分支上轻松执行git pull而无需在命令行上指定远程。

我在租户分支上工作,而我的分支没有更新和旧。我在租户分支中进行了更改,进行了git pull并尝试将更改送到远程。

租户分支执行git push给了我快进错误。

To git@egitrepo:milkyway.git
    ! [rejected]        master -> master (non-fast-forward)
  error: failed to push some refs to 'git@egitrepo:milkyway.git'

此时,我环顾四周,发现这是由于git push试图将我所有的本地分支推送到远程,即我的租户主人(未更新)。

我通过设置找到了解决此问题的方法

 git config --global push.default upstream

它告诉 git 仅将当前分支推送到其匹配的上游分支。这解决了我的问题,我从租户分支的推送成功了。

现在出现了问题部分,当我使用 git diff查看提交历史记录时,我发现了许多其他文件,这些文件不应该是提交的一部分。我只添加了 8 个要提交的文件,并在提交之前非常仔细地查看了git status ,它在要提交的更改部分下只显示了 8 个正确的文件。

所有其他文件是如何进入我的提交的?作为我尝试的第一次失败的git push的一部分,它们是从master添加的吗?我这样说是因为这些是我在分支中更改的一些文件。为什么 git 没有在 git status 的正确部分向我显示它们。有人可以解释一下吗?另外我该如何恢复?

4

1 回答 1

1

您可以查看提交历史记录和 reflog 以确定发生了什么。

使用 git-reflog,我敢打赌你会看到从 master 到租户的合并。

于 2012-11-14T01:55:19.273 回答