无法提交空的git仓库

时间:2014-01-08 14:42:50

标签: git git-bash

我在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-emptygit 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。

3 个答案:

答案 0 :(得分:2)

不是从Stash克隆空存储库,而是尝试在本地(在新目录中)创建一个新的存储库:

git init .

添加您的文件并进行首次提交。新创建的存储库应该具有正确的HEADmaster分支:

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