[英]Git - how to force sync remote from local
我是git的新手。 我读了一些论文,但有一些疑问。 我读过一些类似的帖子,似乎重复了我的问题,然后尝试提出解决方案。 但是,没看,这没有解决我的问题
我有一个远程存储库,我想强制它同步我的本地文件。 我相信遥控器已经过时了。 我只有一个分支主管。
当我试图说“您的分支比'origin / master'领先3次提交”时,我遇到了一个问题。 我做了git reset --hard origin/master
,它解决了这个问题。
现在,我想强制远程分支主存储库使用本地文件进行更新。
我已经使用了git push origin master -f
。 结果是“一切都是最新的”,但是我需要使用本地文件强制更新远程存储库,因为我不确定它是否真的已更新。
Reflog输出:
Luiz@Dell-Sala MINGW64 /c/AppProg/NH (master)
git reflog
5e63abf (HEAD -> master, origin/master) HEAD@{0}: commit: <U+009B>23_02_2019
edc9596 HEAD@{1}: reset: moving to origin/master
1d81b58 HEAD@{2}: commit: <U+009B>22_02_2019
7a4a5cd HEAD@{3}: reset: moving to HEAD
7a4a5cd HEAD@{4}: commit: <U+009B>22_02_2019
f54f851 HEAD@{5}: reset: moving to HEAD
f54f851 HEAD@{6}: commit: tiss 30303
edc9596 HEAD@{7}: commit: novas alteracoes 23_09_2017
07c87c3 HEAD@{8}: commit: commit 14092016
b894041 HEAD@{9}: commit: mudancas em 05092016
555bdae HEAD@{10}: commit: mudancas em 29082016v1
028d122 HEAD@{11}: commit: mudancas em 29082016
c118805 HEAD@{12}: commit: mudanças em 10_08_2016
e34cf58 HEAD@{13}: commit (initial): #1 - Codigo inicial postado
Luiz@Dell-Sala MINGW64 /c/AppProg/NH (master)
当我试图说“您的分支比'origin / master'领先3次提交”时,我遇到了一个问题。
那不是一个“问题”。 这是git的正常输出(通常是git status
),告诉您您具有可以同步到远程的本地更改。 此时,如果要使用本地更改来更新遥控器,则正确的步骤是
git push
如果这产生了一条错误消息,那么我们需要查看该消息以进一步建议。
我做了git reset --hard origin / master,它解决了这个问题。
您告诉git在这里执行的操作是将当前本地分支( master
)与远程分支同步-删除所有本地更改。 正是由于这意味着不再有任何推动力,这消除了“分支提前”的消息。
根据评论,建议您使用reflog,并添加了reflog输出。 现在,该输出向您显示的是HEAD
引用每次移动的历史记录。 通常,这是由于诸如提交,签出或在这种情况下为重置之类的事情造成的。 所以线
edc9596 HEAD@{1}: reset: moving to origin/master
在您重置本地master
以匹配远程跟踪参考origin/master
,您可能想要做的是将本地master
移回到之前的状态
复杂的事情,但是,您在执行此操作之后又进行了一次提交,如下所示
5e63abf (HEAD -> master, origin/master) HEAD@{0}: commit: <U+009B>23_02_2019
在继续之前,我想强调一下-以下命令基于上述reflog输出。 如果从那时起您已经做过任何事情,那都会增加reflog-例如更多的提交,签出等-那么您需要重新运行git reflog
并相应地调整您使用的命令。
具体来说,我将参考HEAD@2
; 这是因为在reflog输出中HEAD@1
指的是reset
的结果,因此您想返回一个状态 ,而HEAD@2
是HEAD@1
之前的状态。
所以:
如果您在重置后所做的提交代表需要保留的新更改,那么您会说
git branch temp
git reset --hard HEAD@{2}
git rebase --onto master origin/master temp
git checkout master
git merge --ff-only temp
git branch -d temp
如果不需要提交-如果只是尝试还原一些其他本地更改或其他内容-那么您只需要
git reset --hard HEAD@{2}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.