git push origin master 報錯 remote rejected] master -> master (branch is currently checked out)


解決辦法:

 

You can simply convert your remote repository to bare repository (there is no working copy in the bare repository - the folder contains only the actual repository data).

Execute the following command in your remote repository folder:

git config --bool core.bare true

Then delete all the files except .git in that folder. And then you will be able to perform git push to the remote repository without any errors.

share edit
 
4  
Thanks. I also needed this. I was following the submodules tutorial from the Git Community Book and hit this roadblock. – Shiki Sep 14 '10 at 15:20
5  
I wasn't sure whether you meant to delete files on the server, or the client ... so I didn't delete anything, and the problem goes away after just doing git config --bool core.bare true. Is there any particular reason some files need to be deleted? If so, can you be more precise about what needs to be deleted? – Brian Vandenberg Jul 22 '11 at 4:19
18  
It's the best possible answer and nobody else have provided it in the hole Interwebs. I think that we all googled the same error message and we all were extremely happy to read this. – Sebastián Grignoli Jul 16 '12 at 14:56
24  
Although it got a whole lot of votes, I don't think this is a really adequate answer to that specific question. Instructing the user how to cleanly create a bare repo would be half as bad, but what if the files need to stay checked out, for example when it's the repository the user is working with on two computers? – Nowhere man Mar 18 '13 at 10:38
4  
Changing the source repo to bare is overkill. All you need to do is push to a new branch in the source repo, as @Robert points out: stackoverflow.com/a/2933656/402949. – Dan Solovay Oct 7 '13 at 1:16

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

在使用Git Push代碼到數據倉庫時,提示如下錯誤:

[remote rejected] master -> master (branch is currently checked out)
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 git@192.168.1.X:/var/git.server/.../web
 ! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'git@192.168.1.X:/var/git.server/.../web'

這是由於git默認拒絕了push操作,需要進行設置,修改.git/config添加如下代碼:

    [receive]
    denyCurrentBranch = ignore

 

在初始化遠程倉庫時最好使用 git --bare init   而不要使用:git init

   如果使用了git init初始化,則遠程倉庫的目錄下,也包含work tree,當本地倉庫向遠程倉庫push時,   如果遠程倉庫正在push的分支上(如果當時不在push的分支,就沒有問題), 那么push后的結果不會反應在work tree上,  也即在遠程倉庫的目錄下對應的文件還是之前的內容,必須得使用git reset --hard才能看到push后的內容.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM