Git push failed: `refusal to update checked branch: refs / heads / master`

I want to save my local changes to JBoss configuration in git. To do this, I created the following structure:

lrwxrwxrwx 1 jboss jboss 19 Jan 24 11:53 current -> jboss-as-7.1.0.CR1b drwxr-xr-x 11 jboss jboss 4096 Jan 24 12:13 jboss-as-7.1.0.CR1b -rw-r--r-- 1 jboss jboss 108211143 Jan 23 16:02 jboss-as-7.1.0.CR1b.tar.gz drwxr-xr-x 6 jboss jboss 4096 Jan 24 11:36 local 

local is the git repository, which should be the "source". The idea is that I want to be able to easily upgrade the JBoss distribution after the upgrade. I want to save all local changes in a distributed JBoss package in git.

So, currently I am doing this:

 jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git init Initialized empty Git repository in /opt/jboss/jboss-as-7.1.0.CR1b/.git/ jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git remote add origin ../local/ jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git pull origin master From ../local * branch master -> FETCH_HEAD 

So far so good, all my local changes are where I want them.

However, as soon as I have local modifications and you want to return them to the local repository, I get an error message:

 jboss@tpl0:~/jboss-as-7.1.0.CR1b$ vim standalone/configuration/standalone.xml jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git commit -a -m "renamed database to project2_core, to distinguish from other projects" [master 3e54f34] renamed database to project2_core, to distinguish from other projects Committer: jboss <jboss@tpl0.(none)> 1 files changed, 1 insertions(+), 1 deletions(-) jboss@tpl0:~/jboss-as-7.1.0.CR1b$ git push origin master Counting objects: 9, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (5/5), 447 bytes, done. Total 5 (delta 3), reused 0 (delta 0) Unpacking objects: 100% (5/5), 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 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 t remote: error: 'ignore' or 'warn' in the remote repository to allow pushing int 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 som remote: error: other way. remote: error: remote: error: To squelch this message and still keep the default behaviour, se remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'. To ../local/ ! [remote rejected] master -> master (branch is currently checked out) error: failed to push some refs to '../local/' 

What can I do about this? Any help is much appreciated!

EDIT

Here is what I did to solve the problem:

 cd ~/current git init vim .gitignore # set up a basic .gitignore file git add .gitignore git commit -a -m "initial commit" cd ~/local git clone ~/current git branch -m master current # rename master branch to 'current' git branch repo git checkout repo 

Now the current branch in the ~/local directory is always up-to-date, but it does not play out, so I can click on it.

+53
git
Jan 24 2018-12-12T00:
source share
6 answers

Debugging a lead branch on a remote site. If you have access to the remote repository, check out another branch and then click from your repository.

+56
Jan 24 '12 at 11:52
source share

Pushing is for naked repositories. For a non-bare repository you have to pull them in.

If you want to force this to happen anyway, you can do it as indicated in the error message and set the receive.denyCurrentBranch parameter to ignore. SSH to the repo location you click on and run:

 git config receive.denyCurrentBranch ignore 
+66
Jan 24 '12 at 11:16
source share

Create the source (local) repository as an open repository (i.e. git init --bare) or check there for a branch that is not leading.

+14
Jan 24 '12 at 11:17
source share

OR

when you initialize your remote project using

 git init --bare 
+12
Jul 15 '14 at 3:31
source share

I managed to get around this by pulling from "local" to "current", rather than pushing "current" from "local".

+1
Mar 11 '14 at 21:29
source share

I know this is a pretty old question, but if you go with git init -bare, watch out for "GIT_DIR =." which will be set for the bare repo hook if you use the hooks to check the repo after clicking. Use "export GIT_DIR = .git" in your routine to recognize the repo you are pulling into ....

+1
Mar 31 '17 at 11:32
source share



All Articles