繁体   English   中英

你在尚未诞生的树枝上

[英]You are on a branch yet to be born

我有一个奇怪的问题:

$ cd ~/htdocs

$ mkdir test

$ cd test

$ git init
Initialized empty Git repository in /home/deep/htdocs/test/.git/

$ git checkout master
error: pathspec 'master' did not match any file(s) known to git.

$ git checkout -b master
fatal: You are on a branch yet to be born

$ git checkout origin/master
error: pathspec 'origin/master' did not match any file(s) known to git.

$ git branch -a
(empty this)

但这是新的本地空仓库。 主分支在哪里?

一如既往,Git 是对的,它只是有一种古怪的说法:当你创建一个存储库时,主分支实际上还不存在,因为它没有任何指向。

你有没有试过在你的git init之后提交一些东西? 当然,添加遥控器并从中拉出也可以。

我和你有同样的问题。 我解决的方法是创建一个新的空文件只是为了在项目中有一个文件。

git add someFile然后commit -m "first commit"最后用push origin master

我希望它有帮助

如果有人到达这一部分,我认为您对最佳答案不走运。 我也遇到了与 OP 相同的情况。 尝试这个:

  1. 将你的 repo 拉到另一个目录中
  2. 将 .git 文件夹复制到你的新仓库

有一种方法可以在不实际提交任何文件的情况下初始化新的 repo:

git commit --allow-empty -m "Initialization"

如果您碰巧有--bare repo,则解决方法如下:

mkdir /tmp/empty_directory
git --work-tree=/tmp/empty_directory checkout --orphan master
git --work-tree=/tmp/empty_directory commit --allow-empty -m "Initialization"
rm -rf /tmp/empty_directory

那是因为你想

git init

在您拥有.gitignore文件的根文件夹中。 创建一个子文件夹并在那里尝试。

当我打开多个 Windows 资源管理器时,我收到了相同的错误消息,它们都打开到同一个现有的本地 git 存储库。

我在一个窗口中创建了一个新分支,方法是使用右键单击 --> 创建分支。

后来,在 Windows 资源管理器的第二个实例中,我尝试右键单击 --> 分支(以找出当前检出哪个分支)。 然后我收到消息“你在一个尚未出生的分支上”。

只需关闭第二个资源管理器即可解决问题,并且错误没有出现在第一个资源管理器中。

我和 OP 有同样的问题。 最初,我做了以下工作:

md Project
cd Project
git init
git remote add origin git@domain.com:user/repo.git

所有后续的git命令都有与 OP 相同的错误。

对我有用的是删除项目文件夹,然后从父文件夹发出以下命令:

git clone http[s]://domain.com/user/repo.git Project

然后它提示我输入我的用户名和密码来访问 repo。 每个git命令都要求提供凭据,因此我运行了以下命令:

git config --global credential.helper wincred

下一个git命令要求提供我的凭据,然后将这些凭据存储在Windows 凭据管理器中(通过控制面板可见)。 现在git命令无需提示输入凭据即可工作。

这是因为您正在上传具有main作为默认分支的 git 存储库。 但是在裸存储库上,默认分支master是默认分支。 要以简单的方式解决此问题,请删除基础存储库。 运行以下命令。
git config --global init.defaultBranch main然后使用以下命令再次创建裸仓库。
git init --bare

尝试在最后添加分支

#!/bin/bash
TARGET="/home/user/repo"
GIT_DIR="/home/user/www.git"
BRANCH="master"
while read oldrev newrev ref
do
 # only checking out the master (or whatever branch you would like to deploy)
 if [ "$ref" = "refs/heads/$BRANCH" ];
 then
  echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
  git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH
 else
  
  # perform more tasks like migrate and run test, the output of these commands will be shown on the push screen
echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server."
 fi
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM