Reputation: 46929
Here in the below code i need some info on cloning
there is a main repo which created by the command
mkdir git_repo
cd git_repo
git init --bare //creates empty repo
Then a user will clone the git_repo
git clone git_repo user_repo
Again the user will clone the new one to create a backup
git clone user_repo user_bk
cd user_bk
//user will edit an existing file and commit it
git push origin master
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 294 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 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 user_repo
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'user_bk'newtest by user
My question is that
1.In git can we checkin to a cloned reporsitory
2.If this has to be donw then how is it to be done
3.How to resolve the above error condition
Upvotes: 2
Views: 141
Reputation: 3476
1.We can push to clone repository. For this configure your .config file in .git directory appropriately.
3. The error you are getting says "branch is currently checked out". Here you are pushing to remote repository on master branch which is checked out at remote side. Checkout a diff. branch at remote side using git checkout branchname and then push again.
Upvotes: 0
Reputation: 466
Go to user_repo and then:
git config --local --add receive.denyCurrentBranch ignore
Then you will be able to do what you tried. However, this is not recommended as stated in your printout. And why commit things in your backup? Use git clone --bare to create the backup instead.
Upvotes: 2
Reputation: 318518
You are not supposed to push to a non-bare repository. Simply use git clone --bare
when creating the backup repository.
Upvotes: 1