我怀疑我所遵循的工作流程是否正确,或者我是否搞砸了这种情况。
我正在研究我在本地和远程创建的分支上的新功能。我是唯一一个从事这项工作的人。
我使用:
创建它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)
我对分支分歧的消息感到困惑。
我对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)
答案 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/master
有自己的历史记录(与您的更改并行)
git checkout rotation
git rebase upstream/master
git push -f origin rotation
请注意,您在分叉origin/rotation
上强制推送(即重新创建更改历史记录):如果没有其他贡献者已从您的分支中撤出,这应该不是问题。
您在rotation
上的工作将基于最新的upstream/master
,这将简化您可能想要做的future pull request。