无法推入Git
我详细地研究了其他类似的问题,最后提出了自己的问题 我开始学习Git,我尝试了一些非常简单的方法。我的目标是在本地机器上创建一个repo,将其克隆到本地机器上的一个文件夹中。对克隆中的文件进行更改。将更改推送到回购协议。以下是我所做的:无法推入Git,git,push,Git,Push,我详细地研究了其他类似的问题,最后提出了自己的问题 我开始学习Git,我尝试了一些非常简单的方法。我的目标是在本地机器上创建一个repo,将其克隆到本地机器上的一个文件夹中。对克隆中的文件进行更改。将更改推送到回购协议。以下是我所做的: 我创建了一个文件夹“test”,里面有“hi.txt” 我在“test”文件夹中运行了git init git添加。 git提交-m“完成” cd.. git克隆测试新测试 我能够看到一个新的测试克隆,里面有一个.git文件夹和从repo克隆的hi.txt 然后
git init
git添加。
git提交-m“完成”
cd..
git克隆测试新测试
git添加。
git提交-m“完成”
$ git push
Counting objects: 5, done.
Writing objects: 100% (3/3), 248 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsist
ent
remote: error: with what you pushed, and will require 'git reset --hard' to matc
h
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To c:/test
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'c:/test'
那么我错在哪里呢?我误解了什么吗?非常感谢您的帮助。您创建的第一个“回购”作为工作副本,即非裸回购
真正的回购协议,那些你可以推动的协议,没有有效的副本。它们只保存对所有分支中所有提交的引用
将普通回购转换为裸回购
mv .git ../
rm *
mv ../.git .
mv .git/* .
rm -rf .git
git config --bool core.bare true
mkdir test
cd test
git init
echo '0.0.1' > version.txt
git commit -a -m "version file"
现在你有了一个非裸回购协议
让我们把它变成一个光秃秃的回购
mv .git ../
rm *
mv ../.git .
mv .git/* .
rm -rf .git
git config --bool core.bare true
现在你有了一个裸回购协议,它的内容是
如果在某个时刻出现错误致命:此操作必须在工作树中运行
现在,您可以像最初那样克隆它
cd ..
git clone test newTest
touch index.html
git commit index.html -m "index file"
git push
您创建的第一个“回购”作为工作副本,即非裸回购
真正的回购协议,那些你可以推动的协议,没有有效的副本。它们只保存对所有分支中所有提交的引用
将普通回购转换为裸回购
mv .git ../
rm *
mv ../.git .
mv .git/* .
rm -rf .git
git config --bool core.bare true
mkdir test
cd test
git init
echo '0.0.1' > version.txt
git commit -a -m "version file"
现在你有了一个非裸回购协议
让我们把它变成一个光秃秃的回购
mv .git ../
rm *
mv ../.git .
mv .git/* .
rm -rf .git
git config --bool core.bare true
现在你有了一个裸回购协议,它的内容是
如果在某个时刻出现错误致命:此操作必须在工作树中运行
现在,您可以像最初那样克隆它
cd ..
git clone test newTest
touch index.html
git commit index.html -m "index file"
git push
谢谢你的回答。如果我要删除我的repo中的所有文件,那么我的克隆如何获得这些文件?裸回购可以从文件开始吗?工作副本中的文件只是.git文件夹中引用的临时显示,这就是为什么可以在不丢失工作的情况下切换分支。裸回购协议没有这样的文件,但它仍然有重要的参考文献。它将它们放在根目录中,而不是放在.git文件夹中。很抱歉,我无法获得您以前的评论。事实上,如果没有一个简单的git工作示例,我很难掌握git的窍门。你能否修改我问题中的步骤,以达到问题中所述的目标?这将非常有帮助。你看到我更新的答案了吗?我希望这会有所帮助除非某个开发人员使用了
push-f
,否则文件不会被覆盖,除非您非常确定要放弃其他人的提交,否则您不应该这样做。但是,当原点中存在分歧更改时,执行拉入操作将触发合并操作,如果存在冲突,请您解决。谢谢您的回答。如果我要删除我的repo中的所有文件,那么我的克隆如何获得这些文件?裸回购可以从文件开始吗?工作副本中的文件只是.git文件夹中引用的临时显示,这就是为什么可以在不丢失工作的情况下切换分支。裸回购协议没有这样的文件,但它仍然有重要的参考文献。它将它们放在根目录中,而不是放在.git文件夹中。很抱歉,我无法获得您以前的评论。事实上,如果没有一个简单的git工作示例,我很难掌握git的窍门。你能否修改我问题中的步骤,以达到问题中所述的目标?这将非常有帮助。你看到我更新的答案了吗?我希望这会有所帮助除非某个开发人员使用了push-f
,否则文件不会被覆盖,除非您非常确定要放弃其他人的提交,否则您不应该这样做。但是,当原点中存在分歧更改时,执行拉取
,将触发合并操作,如果存在冲突,请您解决冲突。