Git:从分支推送导致不需要的文件被提交

时间:2012-11-01 13:59:06

标签: git branch git-branch git-push

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

[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只将当前分支推送到匹配的upsteam分支。这解决了我的问题,我从租户分支的推动成功了。

现在出现问题部分,当我通过使用 git diff 查看提交历史来查看我的提交时,我发现了许多其他文件,它们不应该是提交的一部分。在提交之前,我只添加了8个用于提交的文件并非常仔细地查看了 git status ,并且在更改为提交部分下仅显示了8个正确的文件。 / p>

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

1 个答案:

答案 0 :(得分:1)

您可以查看提交历史记录和reflog以确定发生的情况。

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