git:如何通过合并而不是通过重新配置来跟踪分支?

时间:2016-01-11 14:32:21

标签: git merge

我想设置一个本地跟踪分支,它将通过合并而不是通过rebase跟踪远程分支 当我做git pull时,我想从远程分支合并,而不是重组。

当我这样做时:

git checkout -b someBranch origin/someBranch

然后

git remote show origin

我明白了:

Local branches configured for 'git pull':
  someBranch rebases onto remote someBranch
Local refs configured for 'git push':
  someBranch pushes to someBranch (local out of date)

如果我这样做也会发生同样的事情

git checkout --track origin/someBranch

这是以某种方式在本地配置的吗? 如何更改此行为?

1 个答案:

答案 0 :(得分:4)

默认情况下,GIT在拉动期间执行merge。如果你的人正在做反叛,那么似乎在某些时候你改变了这种行为。或者有人为你做了有用的事。

this article (1)this article (2)以及this article (3)之后引用 - 这些都描述了如何做相反的事情:

(从1开始) GIT中有一个配置标志,启用后,会将pull的默认行为从merge更改为rebase。检查您是否设置了它:

# git >= 1.7.9:
git config --global pull.rebase
git config pull.rebase

在较新的GIT客户端中,它直观地工作。如果它是true,则启用它。只要把旗子关掉。

在较旧版本中,它的工作方式不同。

# git < 1.7.9:
git config --global branch.autosetuprebase
git config branch.autosetuprebase

# and also
git config branch.<name>.rebase

autosetuprebase设置为always时,git会在每个新分支上自动设置rebase标志。这意味着只有您可能不仅要禁用autosetuprebase,还要关闭每个分支的已设置rebase标志。

(来自#2)
如果你想要另一种方式(即你已经拥有旧的GIT客户端和大量的分支,你真的很想写一个重置标志的脚本),那么另一个选择是创建一个git pull的别名,它将添加--no-rebase选项,会强制它进行合并。

(来自#3)
本文说每分支rebase标志保存在配置文件中。因此,在关闭autosetuprebase后,您似乎可以通过从该配置文件中删除所有rebase行来快速禁用所有或某些分支上的rebaseing。