我正在使用git,显然我搞砸了。
所以,我有我的本地PC(称为A),然后是本地PC(称为B)和我的遥控器。
经过一系列事件(忘了拉东西,然后在当地工作等等)情况如下:
在我试图做什么的时候,我让事情变得更糟。
但这些删除了我所有其他更改。我不知道我是怎么做到的。
不仅如此,而且我从PC B(第3版到第11版)所做的所有提交都可以说是从历史中消失了 - 我无法在任何地方看到它们。
因此,我让我的远程和本地PC拥有相同的数据 - 而本地PC B则需要对其进行更改。
我知道我这两周的文件发生了变化 - 所以我正在尝试以下内容(假设它是一个文件 - file.php)
git add file.php
git commit -m "test"
no changes added to commit
乳清试图推送一些我看到的东西:
error: failed to push some refs to 'https://github.com/<url>'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
那么我需要做什么?
我想要做的是 - 只需将此文件推送到我的遥控器,然后我就会执行git pull来同步所有内容。
我正在从命令行执行操作,因为我正在使用VirtualBox,所以没有使用任何GUI。
另外,如果我这样做:
git status
我看到一个文件已修改。
然后如果我提交这个 - 一切都很顺利,但由于之前的错误,我无法将其推送到服务器。请注意,此行为仅适用于属于远程分支中根本不存在的文件夹的文件。
答案 0 :(得分:2)
你的主要问题似乎是你已经失去了#34;在PC B上提交。
你可能已经强制将它们从A中推出然后将这些变化拉到B中,然后将这些变化记录在B上。
您应该可以通过运行
找到丢失的提交git reflog
在PC B上。这将显示PC B上HEAD指针的变化。检查输出。它应该包含提交消息等。当您在PC B上找到rev 11提交时,请执行
git reset --hard <hash of rev 11>
这将带您到PC B上丢失的提交。
为了能够推送这些更改,您必须解决与遥控器的任何冲突。通过制定标准
来做到这一点git pull
这应该会触发本地更改与远程更改之间的合并。当你解决了那些问题后,你应该再次推进。