【问题标题】:My local branch is not able to synch with master我的本地分支无法与 master 同步
【发布时间】:2023-01-12 15:43:32
【问题描述】:

我正在处理本地分支名称是 local1 。我错误地从我的本地分支删除了一个存在于 master 中的文件,然后将更新推送到我的本地分支。 在提高 PR 时显示文件已删除。为了解决这个问题,我尝试使用 git fetch /merge 和 git pull origin master 但没有任何效果。 现在我无法将我的本地分支同步到 master 。它没有更新。

【问题讨论】:

    标签: git git-merge git-commit git-push git-pull


    【解决方案1】:

    好吧,你告诉 Git 删除文件,Git 照办了。 master/main 中的提交没有对文件进行任何更改,因此 Git 认为您的版本“较新”。我建议阅读 Git Book 了解更多背景知识。

    现在,回到你的问题。你怎么能恢复文件?这在一定程度上取决于您如何删除它,以及您是否愿意丢弃您的提交并重新创建看起来相似的新提交。

    1. 您只有一次提交,它只删除文件而没有改变任何其他内容。

      在这种情况下,只需还原提交:git revert $hash_of_your_commit。这将创建第二个新提交,它撤消原始提交的更改(基本上反转/反转补丁/差异)

    2. 您删除了文件并同时提交了其他更改。

      使用 git checkout 获取文件的已知版本,例如来自 master 或来自您删除之前的提交:git checkout master -- path/to/your/file,然后创建一个新提交:git commit -m 'Restore deleted file'

    3. 你的历史/分支是不是共享,您可以重写它。重写意味着丢弃所有旧的提交并重新创建看起来非常相似的新提交,除了文件没有被删除。

      在您走这条路之前,请注意此操作的含义。

      首先,使用常规方法恢复文件(例如选项 1 或 2)。然后使用交互式变基并将恢复提交融合到原始提交中 squashfixup: git rebase -i $hash_before_file_was_deleted

      参考:

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 2013-07-07
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      相关资源
      最近更新 更多