我的Git有点问题。
前言如下:几天前,我做了一些提交,并将它们推送到Github远程。事实证明,其中一些功能与另一个开发人员的功能相干扰。因此,她恢复了我的3-4次提交,这样她就可以测试她的功能了。
现在讲故事。今天,我在本地进行了更多的更改和提交。当我去推送它们时,我被告知远程是不同的,我需要使用合并工具。我做到了(改动很小,很琐碎)。然后,我进行了合并提交。这个提交的问题是它完全覆盖了我所做的本地更改。在另一个线程中询问后,我使用git reset --hard <commit number>
返回到我的工作代码。从现在起,无论我尝试做什么,我都会不断地让远程版本覆盖我的代码。
为什么这种情况不断发生,我该如何解决?我基本上想确保我的本地是最新的远程,我可以把我的更改推到远程。
编辑:
在我做git reset --hard
和尝试做git push origin <commit number>:<remote branch name>
之后,我得到以下错误:
错误:无法将某些引用推送到
'https://github.com/xxx/xxx.git'提示:更新是
被拒绝,因为您当前分支机构的提示在提示后面:它的
远程对应方。集成远程更改(例如提示:"git pull
…’)然后再次推动。提示:请参阅"关于快进的注意事项"
有关详细信息,请参阅"git push--help"。
发生这种情况正是因为您的本地"master"(假设它是master)分支不等于远程"master",也不比远程"master"更高级。
您正在体验软件"分叉"的基础。你只是试图将一个完全不同的故事"推送"到远程存储库,这与你的同事相矛盾。Git不喜欢这种行为,通常会阻止你这样做。
你和你的同事真的需要坐下来谈谈,在"起点+你的改变"one_answers"起点+他们的改变"之间,哪个版本最好。
也许你需要手动合并。
无论最终结果如何,都由您的团队决定。
因此,她恢复了我的3-4次提交,这样她就可以测试她的功能了。
哎哟,她应该为这些麻烦受到责备。她应该使用一个独立的分支/分支来测试她的功能。
花点时间正确地学习"分支、获取、合并、推送"的概念是很重要的。使用实践存储库进行实验,并熟悉git。此外,你可以使用许多"学会使用git"在线课程;许多是交互式的。相关,了解一些git工作流:https://www.atlassian.com/git/tutorials/comparing-workflows
一种选择是"强制"推送到远程服务器,假设这是一个友好的服务器推送。(强制"git-push"覆盖远程文件)
# -- CAUTION --
# > With great power comes great responsibility.
# -- CAUTION --
git push <remote> <branch> -f
git push origin master -f # Example
git push <remote> -f
git push origin -f # Example
git push -f
git push <remote> <branch> --force-with-lease
你的同事可能不喜欢在没有咨询的情况下发生这种情况,就像你不喜欢回复给你带来的问题一样。同样,请与您的同事讨论,共同决定在这种情况下的最佳行动方案。