谢谢你的期待。我毫不怀疑我可能在我的问题中使用了错误的术语,所以让我解释一下这个问题:
pull
之前没有push
。所以,这是我的问题。我使用this SO post来reset
我的代码实例到我上次成功提交的代码(上面的步骤3)并且效果很好。所以现在我可以建立并且我的所有工作再次成为现实。
虽然我的代码的本地副本现在看起来很棒,但我不能{GIT} {G} {而不是首先执行回购中已有的push
。不幸的是,当我执行pull
时,我的所有工作都被覆盖了,并没有给我合并的机会。
有什么建议吗?
答案 0 :(得分:1)
如果强制推送已经发生,如果您认为您的盒子上的仓库状态是您希望存储库所处的状态,那么只需再次执行git push -f
。
答案 1 :(得分:1)
为什么不将本地更改分支到单独的分支。将回购拉到你的主分支。在本地合并。然后推回回购?
答案 2 :(得分:1)
是的,您可以在没有拉动的情况下在本地合并更改,然后在修复混乱后将其推回到远程仓库。
我相信远程仓库中的图表是:
C1 - C2
你当地的git是:
C1 - C1'
因为你的C1'不是基于C2的任何东西,所以你不能提交(除非你强行执行)
您可以通过首先git fetch将本地git图更新到下面来修复此问题:
C1 - C1' (local/master)
\- C2 (origin/master)
然后你可以通过
合并git merge origin/master
你可能会遇到冲突。修复完所有内容后,您应该得到如下图表:
之后
C1 - C1' ---------- C3 (local/master)
\- C2 (origin/master) -/
然后你应该能够在没有--force
的情况下推进答案 3 :(得分:1)
来自git help push
:
For a failed update, more details are given:
rejected
Git did not try to send the ref at all, typically because it is not a fast-forward and you did not force the update.
remote rejected
The remote end refused the update. Usually caused by a hook on the remote side, or ...
git pull
命令是git fetch && git merge
的快捷方式(如果使用git rebase
选项,则为--rebase
)。因此,您可以先获取然后手动合并远程更改。 git status
告诉您是否在上游后面,如果您可以轻松更新分支:
Your branch is behind 'origin/master' by 4 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Git-prompt非常方便快速了解是否存在远程更改以进行检索和合并。请参阅u-4
后的提示中的“git fetch
”以及git log ..@{u}
报告的四个传入提交的列表:
(master $ u= origin/master)]$ git fetch
(master $ u-4 origin/master)]$ git log ..@{u} --oneline
7edead8 NXP-15160 fixing test class path for redis test-jar
d507b6f NXP-15160 renamed cache component
aaf64ab NXP-15161 re-worked redis feature activation
23b1d2c NXP-15254: use concurrent hash maps to avoid locks on service access