我遇到了一个我似乎无法理解的奇怪问题。我有两个本地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的正确部分向我显示。可以解释一下吗?另外我怎么回复?
答案 0 :(得分:1)
您可以查看提交历史记录和reflog以确定发生的情况。
使用git-reflog,我打赌你会看到从主人到租户的合并。