我使用的是 msysgit(适用于 Windows 的 Git)。以前运行“git pull”会自动“git fetch”,然后使用来自上游的新 HEAD 在每个分支上重新设置我的更改。现在看来“git pull”通常只会给我错误,提示我配置文件中没有设置“branch.*.merge”。以前这个方法有效时,我没有在配置文件中做任何特殊操作。这是我创建本地分支的方式吗?我通常这样做:
git checkout -b localbranch origin/remotebranch
这是创建分支的最佳方式吗?这样“git pull”就会自动合并它们?(因为它似乎对我来说不起作用)
答案1
您的配置文件中需要类似以下内容的内容:
[branch "master"]
remote = origin
merge = refs/heads/master
如果需要为现有分支添加此信息,可以使用以下命令:
git branch --set-upstream mybranch origin/remotebranch
如果您正在创建新分支,则可以使用以下命令之一确保该分支是远程跟踪分支:
git branch --track mybranch origin/remotebranch
git checkout --track -b mybranch origin/remotebranch
但是,--track
应该是默认值。如果不是,则设置branch.autosetupmerge
可能设置为 false。要重置它,您可以将其设置为 true 或取消设置:
git config --global branch.autosetupmerge true
git config --global --unset branch.autosetupmerge
答案2
请谨慎使用上述内容。我只熟悉 Linux 上的 git,因此细节可能会有所不同。
“git fetch” 获取更改,不执行其他任何操作 “git pull” 执行“git fetch” 然后执行“git merge”(即,将远程更改合并到当前内容中) “git pull -r” 执行“git fetch” 然后执行“git rebase”(即,将您所在分支的尖端更新为远程分支,然后将您的更改重新置于顶部)
我对“git pull”(版本 1.8.1-290)的帮助指示我查看“git config”中的 branch.<name>.rebase 和 branch.autosetuprebase 以自动进行设置。