[英]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 相同的情况。 尝试这个:
有一种方法可以在不实际提交任何文件的情况下初始化新的 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.