如何避免使用 '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}
重置本地更改到远程分支的状态。