git push fails :`refusing to update check out branch : refs / heads / master`
JBoss 구성에 대한 로컬 수정 사항을 git에 저장하고 싶습니다. 이를 위해 다음 구조를 설정했습니다.
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
"원본"이 될 git 저장소입니다. 아이디어는 업데이트가 제공되면 JBoss 배포를 쉽게 업데이트 할 수 있기를 원한다는 것입니다. 배포 된 JBoss 패키지에 대한 모든 로컬 수정 사항을 git에 저장하고 싶습니다.
그래서 현재 저는 이렇게합니다.
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
지금까지 내 모든 로컬 수정이 내가 원하는 곳에 있습니다.
그러나 일단 로컬 수정이 있고 local
저장소로 다시 부싱하고 싶다면 오류가 발생합니다.
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/'
이것에 대해 무엇을 할 수 있습니까? 어떤 도움이라도 대단히 감사합니다!
편집하다
문제를 해결 한 작업은 다음과 같습니다.
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 branch current
in directory ~/local
is always up-to-date, but it's not cheked out, so that i can push into it.
The master branch at remote site is checked out. If you have access to remote repository, checkout any other branch and then push from your repository.
Pushing is meant for bare repos. For non-bare repos you should pull into them.
If you want to force this through anyway, you can do as the error message states and set receive.denyCurrentBranch to ignore. SSH to the location of the repo you are pushing to and run:
git config receive.denyCurrentBranch ignore
Create the origin (local) repository as a bare repository (ie. git init --bare), or checkout a branch in there which is not master.
OR,
when you initialize your remote project, using
git init --bare
I managed to get round this by pulling from 'local' in 'current' rather than pushing to 'current' from 'local'.
I know this is quite an old question, but if you go with git init --bare, watch out for 'GIT_DIR=.' which will be set for a bare repo hook if using hooks to checkout the repo after pushing. Use 'export GIT_DIR=.git' in your hook routine to make it recognise the repo you are pulling into....
ReferenceURL : https://stackoverflow.com/questions/8985782/git-push-fails-refusing-to-update-checked-out-branch-refs-heads-master
'IT박스' 카테고리의 다른 글
Python : smtplib 모듈을 사용하여 이메일을 보낼 때 "제목"이 표시되지 않음 (0) | 2020.12.27 |
---|---|
"이름이"rabbit "인 노드가 이미 실행 중"이지만 " 'rabbit'노드에 연결할 수 없습니다." (0) | 2020.12.27 |
인앱 구매에서 가격 등급을 변경할 수 없습니다. (0) | 2020.12.27 |
자바 스크립트 루프 변수 범위 (0) | 2020.12.27 |
OSX 10.11 El Capitan에 virtualenvwrapper를 설치할 수 없습니다. (0) | 2020.12.27 |