-3

我在一个由 5 名开发人员组成的小团队中工作,当我使用我的一项更改进行 git push 时,过去 10 天的代码对于其他开发人员来说正在消失。我的没有任何事情发生。作为一个团队,我们无法找到此问题的根本原因。

回顾提交历史,没有显示过去 10 天内所做的任何推送。有没有人知道这可能是什么根本原因以及如何解决它?

这些是我遵循的步骤:

git commit(保存本地更改)git pull(这不是拉远程中的确切更改。我的本地与远程不同步。所以我做了“ git reset --hard origin/master ”,这也没有用,后来我做了“ git clean -f ”。在此之后,我又做了一个 git pull 并从远程获取了最新的代码,然后我做了一个 git push。

现在我的同事做了一个“git pull”

4

1 回答 1

0

git reset --hard origin/master是这里的罪魁祸首。将该命令读作“重置索引,丢弃所有修改的文件,检查 origin/master 中的所有文件,并将当前分支头移动到 origin/master 的提交。” 听起来你有合并冲突,你用一把太锋利的刀处理它。

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

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

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

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

如果您更喜欢直线历史,您可以运行git rebase origin/master它将在主头上重放您的不同提交。冲突可能发生在多个回复上的提交、解决每个、阶段并运行git rebase --continue以恢复。

在这两种情况下处理冲突都有很好的文档,所以我不会在这里详细介绍。

于 2018-01-18T00:04:51.793 回答