为什么 git checkout 不创建新的跟踪分支?

2024-04-14

TLDR:如果 X 作为远程分支存在,则git checkout X应该创建它的本地分支。就我而言,对于单个分支来说,情况并非如此。

远程存储库有一个master, release,和其他一些分支(比如refactor-update) I do:

git clone WHATEVER/repo.git
git checkout release

但我没有收到正常的分支切换消息,也没有收到本地分支跟踪origin/release创建(根据man页面为git checkout)。我还在master.请注意,如果我这样做git checkout refactor-update一切都按预期进行。

这可以在其他计算机上重现(尽管相同的平台和可能相同的 git 版本)。我(出于绝望,不是因为我认为它会起作用),删除了release分支并用备份替换它master分别在行为没有改变的情况下(git push origin :release && git push origin master:release)

我对可能导致问题的原因感到困惑。我的怀疑是git checkout似乎不认识这个词release由于某种原因,这使得它很像执行git checkout。为了尝试跟进这一点,在另一个存储库中,我创建了一个发布分支来查看它是否是保留字或其他内容,但它肯定就在这个存储库中。看起来并没有什么异常的地方.git/config.

git版本:1.8


就我而言,问题是我的项目根目录中有一个与分支同名的文件夹。 Git 似乎认为xyz in git checkout xyz是文件夹,而不是分支。

我必须执行以下操作才能将工作树切换到分支xyz首次:

git checkout -t origin/xyz

显然,这增加了几行.git/config(也许还有其他配置文件)。之后,我可以在之间切换xyz and master只需致电git checkout xyz / git checkout master.

当我在根文件夹中并调用git checkout xyz在我克隆存储库后,git 不执行任何操作,也不给出任何响应。当我cd到子文件夹,以便该文件夹xyz不再在范围内,然后调用git checkout xyz,git 抱怨:error: pathspec 'xyz' did not match any file(s) known to git.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 git checkout 不创建新的跟踪分支? 的相关文章

随机推荐