我正在研究git,起初似乎没问题,但是当我尝试推送主文件中的更改时,我遇到了这些错误:
Counting objects: 3, done.
Writing objects: 100% (3/3), 232 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
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 inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
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:\wamp\www\MyGit\myfirstgit
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'C:\wamp\www\MyGit\myfirstgit'
好的,这就是我的所作所为:
我创建了我的主文件夹
- C:\ wamp \ www \ MyGit \ myfirstgit
将文件夹签出到\ _www
- C:\ wamp \ www \ myfirstgit
我创建了一个自述文件
- C:\ wamp \ www \ myfirstgit> echo'TEST README'>自述
检查状态 C:\ wamp \ www \ myfirstgit> git status
在分支主机上
初始提交
未跟踪的文件: (使用“git add ...”包含将要提交的内容)
README
没有添加到提交但未跟踪的文件存在(使用“git add”跟踪)
添加并提交更改
C:\ wamp \ www \ myfirstgit> git add README
C:\ wamp \ www \ myfirstgit> git commit -m“我的第一次提交”
[master(root-commit)43bad4e]我的第一次提交 1个文件已更改,1个插入(+) 创建模式100644 README
然后我推动更改:
- C:\ wamp \ www \ myfirstgit> git push origin master
我也试过指出目录但是错误:
C:\wamp\www\myfirstgit>git push origin C:\wamp\www\MyGit\myfirstgit
fatal: remote part of refspec is not a valid name in C:\wamp\www\MyGit\myfirstgit
然后我得到了上面的错误。
你能帮我解决这个问题吗?我是使用此工具的新手。
感谢。
答案 0 :(得分:3)
git中远程存储库的典型用例是远程存储库仅用于与其他开发人员交换代码和备份。这样的中央存储库通常是裸,这意味着它不包含工作目录;它只包含git历史记录。正如您所发现的,将更改推送到非裸存储库有点问题。
如果要将第一个存储库保持为非裸存(以便它具有工作目录,并且您可以直接使用其中的文件),请转到C:\wamp\www\MyGit\myfirstgit
并运行git checkout --detach HEAD
。现在,推动应该工作。但请注意,工作目录C:\wamp\www\MyGit\myfirstgit
中的文件不会更改,因为存储库不会自动检出推送的更改(错误消息实际上表示您尝试推送到活动分支,这将需要C:\wamp\www\MyGit\myfirstgit
中的工作目录进行更改,而git不支持该工作目录。
否则,您可以将您的远程仓库重新创建为裸机(假设唯一的内容是C:\wamp\www\myfirstgit
中仍然存在的初始提交):删除C:\wamp\www\MyGit\myfirstgit
下的所有内容,包括隐藏的{{1} }目录,并在那里运行.git
;然后,再次从git init --bare .
推送。
答案 1 :(得分:3)
错误消息说明了一切。您需要使用裸仓(推荐),或者如果您绝对需要非裸露 - 请在此处执行git config receive.denyCurrentBranch warn
然后再推送。请注意,它只会更新.git
目录中的文件,远程工作副本将保持不变,直到有人在此处执行git reset --hard
。
在较新的git上,您可以将receive.denyCurrentBranch
设置为updateInstead
,它会在自动推送时更新。
答案 2 :(得分:-5)
使用
git push origin master
但是我建议你不要使用master作为你的工作分支,所以这样做是为了创建一个新的分支
git checkout -b name_of_branch
确保您也远程添加分支。从这里开始,您可以继续正常的过程。
git add -A
git commit -m "commit message"
git push origin name_of_branch