git中一般使用 git init 创建的库不允许同一分支多个work tree直接提交,如果这么做有可能会出现以下问题:
remote: error: refusing to update checked out branch: refs/heads/master
要解决这个问题可以有以下四种方式
# 创建共享库(bare)
$ mkdir /git/repo.git && cd /git/repo.git && git init --bare
# 本地库
$ mkdir ~/repo && cd ~/repo && git init
# 创建一个文件
$ vi foo
# 增加新增文件到库管理
$ git add .
# 提交
$ git commit
# 增加共享库位置
$ git remote add origin file:///git/repo.git
# 提交更改
$ git push origin master
# 创建库
$ mkdir /git/repo && cd /git/repo && git init
# 创建一个文件
$ vi foo
# 增加新增文件到库管理
$ git add .
# 提交
$ git commit
# 新建一个分支
$ git branch test
# 本地库
$ git clone file:///git/repo && cd repo
# 切换到分支test
$ git checkout test
# 修改文件
$ echo "foo">foo
# 提交
$ git commit
# 增加远程库位置
$ git remote add origin flie:///git/repo
# 提交更改
$ git push origin test
修改远程库.git/config添加下面代码
[receive]
denyCurrentBranch = ignore
这种方式不能直接显示在结果的work tree上,如果要显示,需要使用
git reset --hard才能看到
在远程库上
git config -bool core.bare true