我遇到了一个我似乎不明白的奇怪问题。我有两个本地 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 的正确部分向我显示它们。有人可以解释一下吗?另外我该如何恢复?