出现这个问题的原因如标题所述。
原因
原因是,当前文件的branch和要pull的branch名字不一样,是两个分支。对于两个branch,git不能直接操作,需要你指定什么操作。 要操作的提示也直接给你提醒了:
hint: Pulling without specifying how to reconcile divergent branches is
hint: discouraged. You can squelch this message by running one of the following
hint: commands sometime before your next pull:
hint:
hint: git config pull.rebase false # merge (the default strategy)
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
就是这三种:
git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only
所以呢,这个问题本质上是两个分支不同,要怎样合并两个分支的问题。 当前default的,就是第一种,我不允许两个不同分支rebase,第二个是允许,第三个是fast forward。
对于不想管怎么合并,只想把代码弄下来的解决方案
原因部分已经说了,这个提示是因为本地的branch名字和远端的名字不一样才导致的,所以演变成了如何处理两个分支的问题。 那我避免两个分支,本地再建一个和远端同名的分支,然后把当前所有文件放在那个新的分支上,操作完之后直接git pull 就可以继续操作了。
直面问题的方案
那就看两个分支到底是怎么合并咯,其实都是merge的操作就是了。 rebase就直接改变分支指针的指向,重新指向新的节点,再fastforward。 fastforward就指针直接移动到最前面嘛。 这两种方式显然都是有条件的,能fast forward那得是一新一旧的关系,一条链上的才行;rebase就不同链上的情况。 手随便画个吧: 然后这几个选项,设置一下,再pull就行了。
git config pull.rebase false # merge (the default strategy)
git config pull.rebase true # rebase
git config pull.ff only # fast-forward only
总结
这个问题本质,是如何操作两个分支合并的问题。
|