Git- 本地主分支似乎已损坏
Git- local master branch appears to be broken
我正在开发一个 Python/ Django 项目,使用 Git 来管理我的版本控制。
在实时服务器上,该网站目前按预期运行,但是,我对本地副本上 views
之一的布局/演示文稿进行了一些更改。
为此,当我的本地 master 分支与实时版本保持最新时,我从 master 创建了一个名为 pipelineProject
的新分支,并开始在该分支上工作。在 pipelineProject
上进行更改时,我 'broke' 网站在进行更改的过程中,不得不将该分支恢复到 master 状态几次。
我现在已经让我的 pipelineProject
分支进入了我想要进行的更改正确工作的状态 - 我有 运行 git add -A
和 git 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 与实时主机一起工作时也会损坏?
确保你的本地和远程主机在同一个 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
用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
您的问题:
- 是的,您可以用 pipelineProject 分支替换 master 分支。首先你应该使 pipelineProject 分支跟踪 origin/master,使用
git checkout pipelineProject
和 git branch pipelineProject -u origin/master
,然后删除本地主分支 git branch –D master
,最后将 pipelineProject 重命名为 master git branch -m pipelineProject master
- 是的,这是有原因的。这是由于本地master分支领先于远程origin/master分支(你可以使用
git status
来检查),你可以查看领先于origin/master的提交,使用git log origin/master..master
。因此,对于您的情况,您需要删除“损坏的”提交,您可以使用 git reset --hard <commit id which you want go back>
(如果您不愿意删除主分支)
我正在开发一个 Python/ Django 项目,使用 Git 来管理我的版本控制。
在实时服务器上,该网站目前按预期运行,但是,我对本地副本上 views
之一的布局/演示文稿进行了一些更改。
为此,当我的本地 master 分支与实时版本保持最新时,我从 master 创建了一个名为 pipelineProject
的新分支,并开始在该分支上工作。在 pipelineProject
上进行更改时,我 'broke' 网站在进行更改的过程中,不得不将该分支恢复到 master 状态几次。
我现在已经让我的 pipelineProject
分支进入了我想要进行的更改正确工作的状态 - 我有 运行 git add -A
和 git 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 与实时主机一起工作时也会损坏?
确保你的本地和远程主机在同一个 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
用
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
您的问题:
- 是的,您可以用 pipelineProject 分支替换 master 分支。首先你应该使 pipelineProject 分支跟踪 origin/master,使用
git checkout pipelineProject
和git branch pipelineProject -u origin/master
,然后删除本地主分支git branch –D master
,最后将 pipelineProject 重命名为 mastergit branch -m pipelineProject master
- 是的,这是有原因的。这是由于本地master分支领先于远程origin/master分支(你可以使用
git status
来检查),你可以查看领先于origin/master的提交,使用git log origin/master..master
。因此,对于您的情况,您需要删除“损坏的”提交,您可以使用git reset --hard <commit id which you want go back>
(如果您不愿意删除主分支)