如何避免使用 'git branch --set-upstream' 并默认自动设置远程跟踪
如何避免使用 ‘git branch –set-upstream’ 并默认自动设置远程跟踪
技术背景
在使用Git进行版本控制时,当我们创建新分支并首次推送到远程仓库时,通常需要手动设置远程跟踪分支,如使用 git branch --set-upstream 或 git push -u 命令。这一操作在每次创建新分支时都要重复,较为繁琐。因此,我们希望找到一种方法来避免每次都手动设置,实现自动设置远程跟踪。
实现步骤
Git v2.37.1及以上版本
使用新的配置项 push.autoSetupRemote 来自动设置远程跟踪:
1 | |
设置之后,执行 git push 时会自动设置跟踪,无需使用 git push -u origin my_branch。
首次推送分支时的快捷方式
在首次推送分支时,可以使用 -u 选项:
1 | |
或者推送当前分支:
1 | |
使用 -u 选项一次即可设置本地分支与远程分支的关联,效果等同于 git branch --set-upstream。
使用 git branch --set-upstream-to
Git 1.8.0 引入了更直观的 git branch --set-upstream-to 命令。如果当前位于 my_branch 分支,可以使用以下命令:
1 | |
或者使用短选项:
1 | |
配置 push.default
可以更改 push 的工作方式:
1 | |
这样在执行 git push -u 时,会创建同名的远程分支并进行跟踪。
其他设置方法
- 创建分支时设置跟踪:
1 | |
- 设置全局配置自动关联上游分支:
1 | |
如果采用更注重变基的工作流程,也可以使用 branch.autosetuprebase:
1 | |
核心代码
配置自动设置远程跟踪
1 | |
首次推送分支并设置跟踪
1 | |
设置分支的上游分支
1 | |
最佳实践
使用别名简化操作
可以在 .gitconfig 文件中设置别名:
1 | |
在 .bashrc 或 .zshrc 文件中设置别名:
1 | |
自动化拉取操作
创建一个 git-pulldown 函数,实现自动检测并设置远程合并目标,然后进行拉取:
1 | |
常见问题
配置不生效
如果 git config --global push.default current 不生效,可能是项目有本地的 Git 配置,可以更新项目的本地配置:
1 | |
忘记使用 -u 选项
如果在首次推送分支时忘记使用 -u 选项,可以使用以下命令设置上游分支:
1 | |
然后可以使用 git reset --hard @{u} 重置本地更改到远程分支的状态。