git push分支已签出;然后需要工作目录后裸

git push分支已签出;然后需要工作目录后裸,git,Git,我很难理解这一点;我通过堆栈溢出和博客发现的几乎所有东西似乎都暗示使用--bool core.bare true解决了这个问题,但我相信缺少了一些东西 例如: "cd $HOME" git init thing cd existingrepo git remote add origin "$HOME/thing" git push origin master 这样做,我会得到一个错误![远程拒绝]主机->主机(分支当前已签出) 我找到的答案基本上是,转到thing/并运行 git confi

我很难理解这一点;我通过堆栈溢出和博客发现的几乎所有东西似乎都暗示使用
--bool core.bare true
解决了这个问题,但我相信缺少了一些东西

例如:

"cd $HOME"
git init thing

cd existingrepo
git remote add origin "$HOME/thing"
git push origin master
这样做,我会得到一个错误
![远程拒绝]主机->主机(分支当前已签出)

我找到的答案基本上是,转到
thing/
并运行

git config --bool core.bare true
当我这样做的时候,我确实可以推,但是当我再次转到
东西/
时,它处于一种奇怪的状态——没有文件,而且我被告知正在执行git状态

fatal: This operation must be run in a work tree
所以我反转了布尔运算

git config --bool core.bare true
git status
我发现变化是存在的,但也有
delete
阶段

~/thing$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    .gitignore
        deleted:    registry.py
        deleted:    static/css/normalize.css
        deleted:    static/css/skeleton.css
~/thing$git状态
论分行行长
要提交的更改:
(使用“git重置磁头…”取消分级)
已删除:。忽略
已删除:registry.py
已删除:static/css/normalize.css
已删除:static/css/skeleton.css
我只能通过执行
git重置--hard
来解决这个问题,此时我的
thing/
存储库与我的原始存储库匹配

(我对本地文件夹执行此操作,但在SSH上也会发生相同的行为,这是我的目标工作流-基于SSH的基本repos)


有人能在这里告诉我吗?

你好,你能试着删除你的“thing”repo并用
git init--bare thing.git重新创建它吗。您不需要运行
git config--bool core.bare true

服务器上的内容将变成一个literal.git内容,而不是带有签出文件和.git目录中的git数据的repo。。。。没有一个“重复”解决我正在尝试的模型。。。或者我正在做的是反模式,为什么?为了清楚起见,我希望
东西
repo像普通克隆的repo一样将其git数据保存在
.git
目录中。