我在GIT很新,但我很了解基础知识。但是,我感到困惑......
我们正在使用github,我的分支机构领先13分,20分支在主分支机构之后(非常过时)。
我做了以下事情:
git checkout myBranch
git rebase master
我似乎因某种原因重复合并了相同的文件。
我想这是因为我将更改应用于主分支上提交的每个不同版本?
这花了很长时间,当我完成时,我认为我可以把我(现在希望是最新的)分支推回到github。但它告诉我,我有非快速前进的变化 - 我不明白......
然后我做了拉,git告诉我,我必须再次合并所有相同的文件......
在理解这里发生的事情时,我必须遗漏一些基本的东西。
答案 0 :(得分:2)
基本上rebase
暂时删除你的提交,将它们存储为补丁,获取主机的头部,然后重新应用你的补丁。
这是一个网站,用于解释git rebase的含义 - http://book.git-scm.com/4_rebasing.html。
小心: 这里有龙!
如果您完全确定没有问题,可以忽略该错误并执行git push --force
。 然而,您冒着破坏中央存储库的风险。 Github不建议 - http://help.github.com/remotes/查找Dealing with “non-fast-forward” errors
或尝试解决先拉,然后推送 - git pull origin master
然后git push origin master
一种选择是使用git merge
代替rebase
。 git pull origin master
让主人了解最新动态。社区一直在讨论反叛与合并的问题,各有利弊。
为防止重复内容,涵盖相同主题的文章为http://softwareswirl.blogspot.com/2009/04/truce-in-merge-vs-rebase-war.html,Git workflow and rebase vs merge questions和http://www.randyfay.com/node/89。
合并到主人的例子:
git checkout master
然后git merge mybranch
将master合并到mybranch然后合并到master
git checkout mybranch
然后git merge master
git checkout master
然后git merge mybranch