2013-01-08 71 views
2

我怀疑我所遵循的工作流是否正确,或者我弄糟了这种情况。Git分支转移问题和工作流程

我正在研究本地和远程创建的分支上的新功能。我是唯一从事这项工作的人。

我创建它使用:

git checkout -b rotation upstream/master 

现在我所做的更改和COMMITED:

git commit 

和变化被推到远程分支:现在

git push origin rotation 

我的问题开始。此时我输入了git fetch upstream

现在,当我git status我得到的,

[email protected]:~/QgisGitWorking/Quantum-GIS$ git status 
# On branch rotatation 
# Your branch and 'upstream/master' have diverged, 
# and have 4 and 5 different commits each, respectively. 
# 
nothing to commit (working directory clean) 

我很困惑由分支分歧的消息。

  1. 这里有什么不对吗?
  2. 如果我继续 在这里提交更改并推送上游,是否会出现问题?
  3. 如果有什么错,改正它的最好方法是什么?

我对git相当陌生。以前我只用过VSS。

编辑:

[email protected]:~/QgisGitWorking/Quantum-GIS$ git remote -v 
origin [email protected]:vinayan/Quantum-GIS.git (fetch) 
origin [email protected]:vinayan/Quantum-GIS.git (push) 
upstream git://github.com/qgis/Quantum-GIS.git (fetch) 
upstream git://github.com/qgis/Quantum-GIS.git (push) 
+0

你从'git branch -avv'得到了什么? – ellotheth

+0

@ellotheth - 我得到http://pastebin.com/ncAB56Y3 – vinayan

回答

1

upstream的想法是为了让自己的回购协议本身upstream回购变基上的最新顶部。
通过这种方式,您可以与上游保持同步,同时将自己的贡献推向'origin'(这是一个分支:您拥有的upstream回购的克隆)。

您可以推送到origin。你不能推到upstream(你是不是贡献者)
请参阅“What is the difference between origin and upstream in GitHub?

upstream

在你的情况,我建议,因为upstream/master都有自己的历史(平行于更改)

git checkout rotation 
git rebase upstream/master 
git push -f origin rotation 

需要注意的是力推(即重建的更改历史)上的叉origin/rotation:如果没有其他的贡献已经从你的叉子拉,这不应该是一个问题。
而你在rotation上的工作将基于最新的upstream/master,这将简化你可能想要做的future pull request

+0

@jthill正确。回答编辑。 – VonC

1

你推rotationorigin,但你从upstream牵强。这是两种不同的遥控器,因此具有不同历史的两种不同的回购。

# list remotes 
git remote -v 
+0

所以我搞砸了..我可以做些什么来解开这个?我从此没有做过任何工作.. – vinayan