I'm following the the workflow described here, as I found many references pointing to this page as a good workflow. As mentioned in the article, "feature" branches are shared between developers, but do not go to the central repository.
Let's say a developer "A" starts a new feature branch with git checkout -b newfeature develop
. Now let's say that developer "B" needs also to work on this feature. This is my problem.
What I did:
- developer "B" adds developer A's machine as a remote
- developer "B" runs
git branch remoteA/newfeature
- developer "B" works on this branch, commit his work and pushes the changes back to remoteA.
Step 3 is not working, right now. I get a message:
remote: error: By default, updating the current branch in a non-bare repository is denied, because it will make the index and work tree inconsistent with what you pushed, and will require 'git reset --hard' to match the work tree to HEAD.
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to 'ignore' or 'warn' in the remote repository to allow pushing into its current branch; however, this is not recommended unless you arranged to update its work tree to match what you pushed in some other way.
remote: error: To squelch this message and still keep the default behaviour, set receive.denyCurrentBranch' configuration variable to 'refuse'.
I have already set sharedRepository = true
, but it did not help.
I have 2 questions:
- what's the correct way to share feature branches between developers?
- how can I push back the changes in developer B's repository to developer A's original one?