当我执行 Git 推送时,代码正在消失



我在一个由 5 名开发人员组成的小团队中工作,当我对我的一个更改进行 git 推送时,其他开发人员的最后 10 天代码正在消失。我的什么都没发生。作为一个团队,我们无法找到此问题的根本原因。

在提交历史记录中查看,不会显示过去 10 天内进行的任何推送。 有没有人知道这可能是造成这种情况的根本原因以及如何解决它?

这些是我遵循的步骤:

git commit(保存本地更改)git pull(这不是在远程中提取确切的更改。我的本地与远程不同步。所以我做了">git reset --hard origin/master",这也不起作用,后来我做了">git clean -f"。在此之后,我再次进行了 git 拉取并从远程获取了最新代码,然后我做了一个 git 推送。

现在我的同事做了一个"git pull">

git reset --hard origin/master

是这里的罪魁祸首。将该命令读作"重置索引,丢弃所有修改的文件,签出源/主站的所有文件,并将当前分支头移动到源/主站的提交。听起来你有一个合并冲突,你用一把有点太锋利的刀来处理它。

好消息是,只要您拥有原始存储库,您至少可以取回以前提交的任何文件。使用git reflog查找以前版本的提交并使用git reset --hard <commit hash>。这将使您当前的分支恢复到您开始之前的状态。

不,您需要将遥控器上的更改集成到当前更改中(您所做的是将本地更改替换为遥控器上的更改。您有两种选择,git mergegit rebase

首先获取以获取远程上的所有内容并更新远程引用。(git pull本质上是git fetch的,git merge汇总到一个命令中,认为它可以配置为变基)。抓取是非破坏性的,允许您准确决定如何处理问题。

如果您不介意合并提交和稍微混乱的历史记录,您现在可以运行git merge origin/master并处理出现的任何冲突。然后你可以推送,你会是最新的。

如果你更喜欢一条直线的历史,你可以运行git rebase origin/master它将在主头的顶部重播你的发散提交。在回复、解决每个提交、暂存和运行git rebase --continue恢复时,可能会发生冲突。

在这两种情况下处理冲突的优秀文档可用,因此我不会在这里详细介绍。

您可以执行git 拉取,然后签出到您的功能分支。现在,您应该能够看到所有更改。

相关内容

  • 没有找到相关文章

最新更新