不指定 `origin/` 的情况下检出远程分支的 Git 操作

3
自从 git 版本 1.6.6 起,有一个非常方便的缩写可以用于检出远程分支。您可以输入以下命令: git checkout test 而不是 git checkout -b test origin/test 然而,这种行为在过去曾经给我带来麻烦,特别是在终端中使用 git-completion 时。首先,自动补全功能总是列出所有的远程分支,其次,我曾经意外地检出了一个与我实际想要的本地分支同名的远程分支。
因此,我的问题是,是否可以强制 git 不接受上述缩写(并反过来影响 git-completion/bash-completion)?

我想知道你是否能够首先进行警告。 - Joseph K. Strauss
@JosephK.Strauss 对于可逆过程,特别是非破坏性过程,最好按照用户要求执行,并允许他们稍后撤销。另一种选择是不断地猜测他们的意图。话虽如此,我已经使用Git多年了,却从未听说过这个功能。 - Schwern
2个回答

1
如果您想创建一个本地分支,名称与远程分支(从当前HEAD位置)相同,请执行 git checkout --no-track -b <branchName>,它应该强制您的分支不是跟踪分支。 如果您执行 git branch -vv ,它将列出所有分支,并对那些正在跟踪的分支显示它们正在跟踪的内容。

0

为了防止 git-completion 在 tab 自动补全时将远程分支考虑在内 git checkout [TAB],我最终修改了 git-completion.bash 如下:

  • 查找 _git-checkout()
  • 将此函数中的 ...__git_refs... 替换为 ...__git_head...

为了进一步保留自动补全远程分支(仅限于 origin 的远程分支)的功能,我执行了以下操作:

  • git config --global alias.rco checkout
  • 将原始的 _git-checkout() 复制为 _git-rco()
  • $(__git_refs '' $track) 替换为 $(__git_refs 'origin' $track)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接