Git Branch Diversion问题和工作流程

时间:2013-01-08 04:25:48

标签: git

我怀疑我所遵循的工作流程是否正确,或者我是否搞砸了这种情况。

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

我使用:

创建它
git checkout -b rotation upstream/master

现在我做了更改并提交了:

git commit

并且更改被推送到远程分支:

git push origin rotation

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

现在,当我git status时,

vinayan@vinayan-MS-7623:~/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. 如果出现问题,纠正它的最佳方法是什么?
  4. 我对git很新。以前我只使用过VSS。

    修改

    vinayan@vinayan-MS-7623:~/QgisGitWorking/Quantum-GIS$ git remote -v
    origin  git@github.com:vinayan/Quantum-GIS.git (fetch)
    origin  git@github.com:vinayan/Quantum-GIS.git (push)
    upstream    git://github.com/qgis/Quantum-GIS.git (fetch)
    upstream    git://github.com/qgis/Quantum-GIS.git (push)
    

2 个答案:

答案 0 :(得分:1)

您已将rotation推送至origin,但您是从upstream获取的。这是两个不同的遥控器,因此有两个不同历史的回购。

# list remotes
git remote -v

答案 1 :(得分:1)

upstream的想法是允许您自己的回购在upstream回购的最新版本之上自行修改。
这样,您可以与上游保持同步,同时将您自己的贡献推向'origin'(这是一个分叉:您拥有的upstream repo的克隆。

您可以转到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