我在Atlassian Stash中创建了一个空的Git存储库并克隆了它。
$ git clone http://me@myrepo/my/repo.git
...
warning: You appear to have cloned an empty repository.
然后我创建了一些文件,通过git add
添加了这些文件,并希望通过git commit
提交。我收到以下错误:
ERROR: Unable to determine active branch in current context !
ERROR: GITLib::Branch::get_current died at line 41
当我git rev-parse HEAD
时,我得到:
$ git rev-parse HEAD
HEAD
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
当我发出git branch -a
以查看是否有任何远程分支时,输出为空。
让我们在本地创建一个分支:
$ git checkout -b "foo"
Switched to a new branch 'foo'
$ git commit -m "test"
ERROR: Unable to determine active branch in current context !
ERROR: GITLib::Branch::get_current died at line 41
如何让我的回购处于可行状态?
我尝试发布git commit --allow-empty
,git init
,但它没有改变任何内容。
修改
当我在git init
本地创建一个空的回购时,git add
并尝试git commit
类似的情况发生:
ERROR: GIT::Command::git_or_die died at line 164
编辑2:
由于我公司的钩子,这似乎是一个内部问题。如果问题得到解决,我会详细介绍。
使用Git Bash 1.8.5.2 @ Win7。
答案 0 :(得分:2)
不是从Stash克隆空存储库,而是尝试在本地(在新目录中)创建一个新的存储库:
git init .
添加您的文件并进行首次提交。新创建的存储库应该具有正确的HEAD
和master
分支:
git add file1.txt
git add file2.txt
git commit
然后,将空的Stash repo添加为远程并在那里推送master:
git remote add origin http://me@myrepo/my/repo.git
git push -u origin master
答案 1 :(得分:1)
实际上你猜对了,这完全是你的(实际上是我们,因为我负责他们)公司的钩子。
错误:
当我们尝试查找当前分支的名称时,会发生错误:无法确定当前上下文中的活动分支!
错误:GITLib :: Branch :: get_current在第41行死亡
。 目前我们正在使用“git branch --list”来查找它,但是如果是空的回购,则返回空结果。
解决方案需要转到别的地方,可能是“get symbolic-ref”,如下所示:https://stackoverflow.com/a/2111099 (问题是我们必须支持仍在Git 1.7.9中的客户)
菲尔。
答案 2 :(得分:0)
这个问题确实是由我公司平台团队安装的全局挂钩引起的。该消息看起来像是一些Git内部,这就是它误导我的原因。
我所做的是从.git/hooks
本地删除钩子并停用复制创建回购的钩子:
运行git config --system -e
打开系统配置文件的编辑器(在我的情况下为C:\Program Files (x86)\Git\etc\gitconfig
)并删除以下行:
[init]
templatedir = D:/tools/Git/hooks/templates