我对GIT不熟悉,事实上它几乎就像SVN(我的舒适区)一样。有一个"单身"远程存储库,我们都是从一个主分支推送和提取更改。我推了一些更改,然后我将其拉到第四个位置(生产服务器),所以我知道我的更改是通过"单个"远程存储库。
我的git推动产生了"一切都是最新的"消息。
如何调试情况。我认为这个问题已经结束,但我甚至不知道如何引导他进行调查。我也找不到任何记录来源。
任何有关诊断问题的方法的帮助都将受到赞赏。
谢谢
答案 0 :(得分:0)
首先,你需要确保你已按下你想要的东西 检查输出:
git branch -avv
(查看您是否有活动分支,或者如果您在detached HEAD mode)git log
(检查分支上最近的最新SHA1)git ls-remote origin
(看看是否确实推送了相同的SHA1)然后你可以在生产方重复这些检查,看看为什么git pull
无法获取并合并你推送的最近的SHA1。
答案 1 :(得分:0)
这是我的2美分:
假设您有以下提交的两个分支(无订单,但是从左到右):
person 1 2 3 4 5 6 7 8
Master 1 2 3 4 5 6 9
现在,当person
分支中的人试图拉master
时,git发现分支中有一个Master没有的提交。拉力基本上是两个分支的merge
。在这种情况下,person
分支的人可以这样做:
git reset --soft HEAD~2
git pull origin Master
git add ##### Whatever Files #####
git commit -m "10"
git push origin person
他刚才做的是重置提交号7和8,但保留了由于它们而改变的代码。他与master
的提交级别不同,因此可以获得第9名。他现在可以推动更改。人员分支现在是:
person 1 2 3 4 5 6 9 10
或者,他也可以reset
然后stash
进行更改,然后应用stash
。
现在,有时用户可能会发现他的遥控器与他所从的地方不同。在这种情况下,只需检查git remove -v
,如有必要,将其更改为您克隆的正确链接git remote set-url origin git://new.url.here
他也可能在获取正确的分支时遇到问题。在这种情况下,他应该这样做:
`git fetch`
将拉出所有远程分支,然后执行git checkout branchName
希望这有帮助。