Git-本地主分支似乎已被破坏

时间:2016-11-22 16:02:06

标签: django git version-control git-branch master

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

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

要做到这一点,当我的本地主分支与实时版本保持同步时,我从master创建了一个名为pipelineProject的新分支,并开始在该分支上工作。在对pipelineProject进行更改时,我打破了'在改变过程中的网站,不得不将该分支恢复到主人的状态几次。

我现在已经将pipelineProject分支机构设置为我希望正常工作的状态 - 我已经运行git add -Agit commit -m 'message'以确保我的工作{{1}分支备份。

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

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

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

  

已经是最新的

我不明白为什么会这样......如果我的本地主人是最新的,那么为什么我能够在实时服务器上正确查看网站,但当我在本地查看时服务器,它没有正确显示......?

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

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

修改

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

为什么我的本地大师会被打破,即使它与现场大师在现场大师工作时是最新的?

2 个答案:

答案 0 :(得分:1)

对于你的问题:

  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. 是的,有理由这样做。它是由本地主分支在远程的原始/主分支之前引起的(您可以使用git status来检查),并且您可以查看原始/主数据之前的提交,使用git log origin/master..master。因此,根据您的情况,您需要删除“损坏”的提交,您可以使用git reset --hard <commit id which you want go back>(如果您不愿意删除主分支)

答案 1 :(得分:0)

  1. 确保您的本地&amp;远程主站在同一个commit-sha中 $ git checkout pipelineProject # go to your pipelineProject branch
    $ git branch -D master # delete the local master branch

    然后上网并复制主人的最后一次提交 $ 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并推送到服务器

    $ 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