Git远程分支存在则追踪检出,不存在则创建,如何优化命令?
更简洁地处理「创建本地分支并关联可能不存在的远程分支」
我需要向一个可能不存在的远程分支提交内容,克隆仓库后本地只有默认分支,目前用的第一行命令是:
git checkout -b ${BRANCHNAME} origin/${BRANCHNAME} --track || git checkout -b ${BRANCHNAME}
有两种更简洁优雅的写法:
方法1:使用git checkout(兼容所有较新版本Git)
git checkout ${BRANCHNAME} || git checkout -b ${BRANCHNAME}
- 执行逻辑:先尝试切换到本地分支
${BRANCHNAME},如果本地没有该分支,会自动查找同名远程分支origin/${BRANCHNAME},若存在则创建本地分支并关联远程;若远程也不存在,命令失败后执行后半段创建本地分支。
方法2:使用git switch(Git 2.23+ 推荐,语义更清晰)
git switch ${BRANCHNAME} || git switch -c ${BRANCHNAME}
- 执行逻辑:和上面一致,
git switch ${BRANCHNAME}会优先查找本地分支,不存在则尝试关联同名远程分支创建本地分支;远程也不存在时,执行git switch -c ${BRANCHNAME}创建新的本地分支。
这两种写法都能替代原来的命令,代码更简洁且逻辑清晰。
内容的提问来源于stack exchange,提问作者RaGe
相关产品推荐
相关产品推荐

