我把git搞得一团糟,有人能解释一下我做错了什么吗?

我把git搞得一团糟,有人能解释一下我做错了什么吗?,git,Git,我仍在学习git,我将它用于实践,并将其作为一种工具来保存我的项目进度。我从办公室电脑和家庭电脑在同一个应用程序上工作。我是唯一一个在做这件事的人。昨天在家工作结束后,我像往常一样推动我的改变,但出于某种原因,git抱怨(我以前一定做了错事)。所以我做了(如果我没记错的话)git推原始主机--force 今天在工作中,我试图更新我的本地文件,我收到了以下消息: C:\Users\nova\Desktop\ez-class>git pull origin master From https:

我仍在学习git,我将它用于实践,并将其作为一种工具来保存我的项目进度。我从办公室电脑和家庭电脑在同一个应用程序上工作。我是唯一一个在做这件事的人。昨天在家工作结束后,我像往常一样推动我的改变,但出于某种原因,git抱怨(我以前一定做了错事)。所以我做了(如果我没记错的话)
git推原始主机--force

今天在工作中,我试图更新我的本地文件,我收到了以下消息:

C:\Users\nova\Desktop\ez-class>git pull origin master
From https://github.com/sickdyd/ez-class
 * branch            master     -> FETCH_HEAD
 + ace98f3...145956d master     -> origin/master  (forced update)
Already up to date.
但是。。。这不是最新的。所以我在谷歌上搜索如何解决这个问题,有点匆忙,我认为这是正确的方法:

这就是我所做的(叹气):

因此,我很高兴让大家知道,显然,我在远程存储库上的所有更新都不见了,也不见了。我不确定这里发生了什么。。。我有没有办法解决这个问题,或者我必须回家重新推动这些改变

编辑:最后,我不得不承认,仅仅为了保持文件同步,git就让人感到相当痛苦;你知道更好的解决办法吗?Google drive将不允许忽略子文件夹(如node_模块)

我在远程存储库上的所有更新都已消失

当你强行从家里推到办公室时,你超越了办公室主分支的历史

当您有权访问您的办公室时,您可以使用列出最近一次强制推送之前的提交。你可以

然后,在家里:

  • 再次克隆office repo(在新文件夹中)
  • 报告您的最新更改
  • 添加、提交和推送

更一般地说,对于同步文件,在中提到了几种备选方案:

  • “”:见“”中的成绩单
  • “”
主要是:

  • (免费层,5GB)
  • (开源)
我在远程存储库上的所有更新都已消失

当你强行从家里推到办公室时,你超越了办公室主分支的历史

当您有权访问您的办公室时,您可以使用列出最近一次强制推送之前的提交。你可以

然后,在家里:

  • 再次克隆office repo(在新文件夹中)
  • 报告您的最新更改
  • 添加、提交和推送

更一般地说,对于同步文件,在中提到了几种备选方案:

  • “”:见“”中的成绩单
  • “”
主要是:

  • (免费层,5GB)
  • (开源)

可能发生的情况是,您使用诸如rebase之类的工具编辑了历史记录,或者您恰好位于另一个没有更新的分支中。当分支的历史记录不兼容时,Git会向您发出警告,
--force
会覆盖该历史记录,而不是简单地添加新的提交。我喜欢使用
git-push
,并默认使用同名分支,而不是
git-push-origin-master
。这有助于防止像从错误的、过时的分支向master推送这样的事情


git的好处在于它不会删除提交,它只会创建新的提交。具有正确更新的计算机仍然具有这些更新。您可以使用
git reflog
找到它们。这会显示您的头提交历史,它会随着您的工作而变化。您可以找到看起来正确的提交,然后运行
git checkout
,查看这是否是您想要的状态。然后,您可以在提交时创建一个新分支(
git checkout-b recovery test
),或者只需切换回master并将master重置为该提交(
git checkout master
git reset
)。

可能发生的情况是您使用类似于重基的东西编辑了历史,或者你碰巧在另一个没有更新的分支机构。当分支的历史记录不兼容时,Git会向您发出警告,
--force
会覆盖该历史记录,而不是简单地添加新的提交。我喜欢使用
git-push
,并默认使用同名分支,而不是
git-push-origin-master
。这有助于防止像从错误的、过时的分支向master推送这样的事情


git的好处在于它不会删除提交,它只会创建新的提交。具有正确更新的计算机仍然具有这些更新。您可以使用
git reflog
找到它们。这会显示您的头提交历史,它会随着您的工作而变化。您可以找到看起来正确的提交,然后运行
git checkout
,查看这是否是您想要的状态。然后,您可以在提交时创建一个新分支(
git checkout-b recovery test
),或者切换回master并将master重置为该提交(
git checkout master
git reset
)。

我已经用Steve Gibson评估的工具更新了我的答案。见下文。我已使用Steve Gibson评估的工具更新了我的答案。见下文。
C:\Users\nova\Desktop\ez-class>git fetch

C:\Users\nova\Desktop\ez-class>git reset origin/master --hard
HEAD is now at 145956d hello

C:\Users\nova\Desktop\ez-class>git pull
Already up to date.

C:\Users\nova\Desktop\ez-class>git pull origin master
From https://github.com/sickdyd/ez-class
 * branch            master     -> FETCH_HEAD
Already up to date.