【问题标题】:I made a mess with git, can someone explain me what I did wrong?我把git弄得一团糟,有人能解释一下我做错了什么吗?
【发布时间】:2019-09-28 04:37:41
【问题描述】:

我仍在学习 git,我将它用于练习,并作为一种工具来保存我的项目进度。我在办公室计算机和家用计算机上使用同一个应用程序工作。我是唯一一个在做这件事的人。昨天在家完成工作后,我一如既往地推动了我的更改,但出于某种原因 git 抱怨(我之前一定做错了什么)。所以我做了(如果我没记错的话)git push origin master --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 pull after forced update

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

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.

所以我很高兴地让大家知道,我在远程存储库上的所有更新都已消失以及本地更新。我不确定这里发生了什么...有什么办法可以解决这个问题,或者我必须回家重新推动更改?

编辑:最后我不得不承认 git 只是为了保持文件同步而让人头疼;你知道更好的解决方案吗? Google 驱动器不允许忽略子文件夹(如 node_modules)。

【问题讨论】:

  • 我已使用 Steve Gibson 评估的工具更新了我的答案。见下文。

标签: git


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    当你强制从家里推送到办公室时,你覆盖了办公室主分支的历史。

    当您可以访问您的办公室时,您可以使用git reflog 列出您最近一次强制推送之前 的提交。你可以reset it to its old state

    然后,从家里:

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

    更一般地,对于同步文件,Steve Gibson 在以下内容中提到了几个替代方案:

    主要是:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 2011-03-19
      • 2014-02-20
      • 2018-10-02
      • 2020-05-31
      相关资源
      最近更新 更多