我执行Git Push时代码正在消失

时间:2018-01-17 19:01:30

标签: git github code-push

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

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

这些是我遵循的步骤:

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

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

1 个答案:

答案 0 :(得分:0)

git reset --hard origin/master是罪魁祸首。读取该命令为"重置索引,丢弃所有已修改的文件,检出origin / master中的所有文件,并将当前分支头移动到origin / master的提交。"听起来你有一个合并冲突,你用一把有点过于尖锐的刀来处理它。

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

不,您需要将远程更改集成到当前更改中(您所做的是将本地更改替换为远程更改。您有两个选项,git mergegit rebase

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

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

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

有关处理两种情况下的冲突的优秀文件,所以我不会在这里详细说明。