覆盖 Git Remote 中的某些文件



我正在使用git,显然我搞砸了一些东西。

因此,我有我的本地PC(称为A(,然后是本地PC(称为B(和遥控器。

在一系列事件(忘记拉东西,然后在本地工作等等(之后,情况是这样的:

  • 远程有一个副本
  • 我的两个本地文件都有不同的更改
  • 上周,我一直在从本地PC B进行更改。所以本地 PC A 有修订版 2,本地 PC B 有修订版 11(服务器的最新版(,但它们都有不同的本地更改

在我试图看看该怎么做时,我让事情变得更糟。

  • 我从本地PC A推送数据(也许是强制的 - 我不确定(

但是这些删除了我所有其他更改。我不知道我是怎么做到的。

不仅如此,我从 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 以同步所有内容。

我正在从命令行做事,不使用任何GUI,因为我正在VirtualBox上工作。

另外,如果我这样做:

git status

我看到一个文件已修改。

然后,如果我提交这个 - 一切正常,但由于上一个错误,我无法将其推送到服务器。请注意,此行为仅发生在属于远程分支中根本不存在的文件夹的文件上。

您的主要问题似乎是您在 PC B 上"丢失"了提交。

您可能已经从 A 强制推送它们,然后在 B 中提取这些更改,并且这样做会丢失对 B 上的更改的跟踪。

您应该能够通过运行找到丢失的提交

git reflog

在电脑 B 上。这将显示 PC B 上 HEAD 指针的变化。 检查输出。它应该包含提交消息等。当您在 PC B 上找到修订版 11 提交时,请执行

git reset --hard <hash of rev 11>

这将带您进入PC B上丢失的提交。

为了能够推送这些更改,您必须解决与遥控器的任何冲突。通过制定标准来做到这一点

git pull

这应该会触发本地更改与远程更改之间的合并。当你解决了这些问题时,你应该能够再次推动。

最新更新