Git能否默认追踪当前分支的基准分支?
Git能否追踪当前分支的基准分支并默认从该分支拉取更新?
首先直接给结论:Git本身没有原生的“记住分支基准来源”的追踪机制,但我们可以通过设置上游分支的方式,实现让feature1默认从release1拉取变更的需求,完美解决你提到的绑定场景。
针对你的分支结构:
master ---c0--c1--- \ release1 ---c2--c3 \ feature1 ---?
下面是具体的实现方法:
1. 创建分支时直接关联上游(推荐)
如果还没创建feature1,可以在创建时就指定它的上游为release1,这样Git会自动记住默认拉取源:
git checkout -b feature1 release1 --track
--track参数会自动把release1设为feature1的上游分支,后续执行git pull时,Git会默认从release1拉取并合并变更(也就是你要的c3提交,不会涉及master的c1)。
2. 给已存在的分支设置上游
如果feature1已经创建好了,用这条命令手动关联上游:
git branch --set-upstream-to=release1 feature1
执行完后,你可以用git branch -vv查看分支的上游关联状态,确认feature1已经绑定到release1。
3. 原理说明
Git的分支本质上只是指向某个提交的轻量指针,它不会主动记录分支的“起源基准”,但上游分支是Git提供的一种手动绑定机制,通过配置branch.<branchname>.merge和branch.<branchname>.remote两个参数,告诉Git默认的拉取和推送目标。对于本地分支,remote可以设为.(代表本地仓库),这样git pull就会直接从本地的release1分支拉取更新。
额外提示
- 如果你只是临时想从
release1拉取一次,也可以直接执行:git pull . release1(.表示本地仓库),不需要设置上游。 - 不要担心设置上游后无法合并master的变更,你依然可以手动执行
git merge master或者git pull origin master来合并master的内容,上游只是设置了默认行为。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

