Git- 本地主分支似乎已损坏

Git- local master branch appears to be broken

我正在开发一个 Python/ Django 项目,使用 Git 来管理我的版本控制。

在实时服务器上,该网站目前按预期运行,但是,我对本地副本上 views 之一的布局/演示文稿进行了一些更改。

为此,当我的本地 master 分支与实时版本保持最新时,我从 master 创建了一个名为 pipelineProject 的新分支,并开始在该分支上工作。在 pipelineProject 上进行更改时,我 'broke' 网站在进行更改的过程中,不得不将该分支恢复到 master 状态几次。

我现在已经让我的 pipelineProject 分支进入了我想要进行的更改正确工作的状态 - 我有 运行 git add -Agit commit -m 'message' 来确保我的工作 pipelineProject 分支已备份。

然而,在备份 pipelineProject 之后,我又检查了 master,因为我显然想将我的更改与 master 合并,并且在合并我的更改之前,我尝试加载我的网站在 master 分支上时在浏览器中显示-但由于某种原因现在已损坏...尽管网站已加载,但所有样式都消失了-页面仅显示 HTML 页面中使用的元素(超链接、标题和代码中的一些变量名称)

网站的实时版本仍处于与我开始进行这些更改之前相同的工作状态,因此我尝试切换到本地 master 分支,并 运行ning git pull origin master 用服务器上当前 运行ning 的副本更新我的本地 master 副本。

当我这样做时,git 显示一条消息说:

Already up-to-date

我不明白这是为什么...如果我的本地主机是up-to-date,那为什么我可以在实时服务器上正确查看网站,但是当我在本地查看时服务器,显示不正确...?

当我在我的 pipelineProject 分支上本地查看网站时,它一切正常(并且我所做的更改按预期显示),但我不想合并我的 pipelineProject 分支到我的本地 master 分支,以防我丢失已成功进行的更改。

为什么我的本地master坏了,当live大师工作时,即使两者是相同的?在将我的更改推送到实时服务器之前,我该如何解决这个问题?

编辑

想一想:因为我的 pipelineProject 分支似乎工作正常,我可以用这个替换我的本地 master 分支,然后将其推送到服务器吗?

有没有什么原因导致我的本地主机即使是 up-to-date 与实时主机一起工作时也会损坏?

  1. 确保你的本地和远程主机在同一个 commit-sha
    $ git checkout pipelineProject # go to your pipelineProject branch
    $ git branch -D master # delete the local master branch

    然后去网上复制master最后的commit sha
    $ git checkout paste-commit-sha-here # go to the remote master's last commit
    $ git checkout -b master # create & checkout local master branch

  2. pipelineProject替换本地master并推送到服务器

    $ git checkout pipelineProject # go to your pipelineProject branch
    $ git branch -D master # delete the local master branch
    $ git checkout -b master # create & checkout new local master
    $ git push -f origin master # push to server forcely

您的问题:

  1. 是的,您可以用 pipelineProject 分支替换 master 分支。首先你应该使 pipelineProject 分支跟踪 origin/master,使用 git checkout pipelineProjectgit branch pipelineProject -u origin/master,然后删除本地主分支 git branch –D master,最后将 pipelineProject 重命名为 master git branch -m pipelineProject master
  2. 是的,这是有原因的。这是由于本地master分支领先于远程origin/master分支(你可以使用git status来检查),你可以查看领先于origin/master的提交,使用git log origin/master..master。因此,对于您的情况,您需要删除“损坏的”提交,您可以使用 git reset --hard <commit id which you want go back>(如果您不愿意删除主分支)