threads / discuss / 29361

Commit changes to remote repository

Subject: Commit changes to remote repository

## tl;dr

4 messages between Jan 13, 2012 and Jan 17, 2012.

replies: 3people: 4as markdown or json

ruperty· Jan 13, 2012, 20:29 UTC · lore

Being new to git I am probably not doing things correctly so pointers in the right direction would be useful.

What I want to do make changes on my laptop and commit them to a remote repository. Here is what I have done,

1. Created a repository on my remote linux host, in a folder of cource code,
by,
   git init
   git add *
   git commit
2. On my laptop I did a git clone pointing by ssh to the remote repo which
downloaded all the files to my local system.
3. I changed a file locally and did a commit.
4. I then wanted to update the remote repo with my change, which I did with
a git push, but that didn't work, getting this error,
    remote: error: refusing to update checked out branch:
refs/heads/master
    remote: error: By default, updating the current branch in a non-bare
repository.......
What am I doing wrong?

I was following the tutorial at http://book.git-scm.com/3_distributed_workflows.html

I did search for this issue in this list but didn't understand the responses.

Rupert

-- View this message in context: http://git.661346.n2.nabble.com/Commit-changes-to-remote-repository-tp7185551p7185551.html Sent from the git mailing list archive at Nabble.com.

Carlos Martín Nieto· Jan 14, 2012, 11:31 UTC · re: ruperty · lore

Re: Commit changes to remote repository

On Fri, Jan 13, 2012 at 12:29:49PM -0800, ruperty wrote:
Show 28 quoted lines
> Being new to git I am probably not doing things correctly so pointers in the
> right direction would be useful.
> 
> What I want to do make changes on my laptop and commit them to a remote
> repository. Here is what I have done,
> 
> 1. Created a repository on my remote linux host, in a folder of cource code,
> by,
> 
>    git init
>    git add *
>    git commit
> 
> 2. On my laptop I did a git clone pointing by ssh to the remote repo which
> downloaded all the files to my local system.
> 
> 3. I changed a file locally and did a commit.
> 
> 4. I then wanted to update the remote repo with my change, which I did with
> a git push, but that didn't work, getting this error,
> 
>     remote: error: refusing to update checked out branch:
> refs/heads/master
>     remote: error: By default, updating the current branch in a non-bare
> repository.......
> 
> 
> What am I doing wrong?

You're trying to push to a non-bare repository and change the currently active branch, which can cause problems, so git isn't letting you. There's an explanation of bare and non-bare at http://bare-vs-nonbare.gitrecipes.de/ but the short and sweet is that you should init the repo you want to use as the central point with --bare and do modifications locally and then push there.

   cmn
Matthieu Moy· Jan 14, 2012, 14:27 UTC · re: Carlos Martín Nieto · lore

Re: Commit changes to remote repository

Carlos Martín Nieto <cmn@elego.de> writes:
Show 6 quoted lines
> You're trying to push to a non-bare repository and change the
> currently active branch, which can cause problems, so git isn't
> letting you. There's an explanation of bare and non-bare at
> http://bare-vs-nonbare.gitrecipes.de/ but the short and sweet is that
> you should init the repo you want to use as the central point with
> --bare and do modifications locally and then push there.
An alternative is to push to a temporary, non-checked-out branch.
I sometimes do
  laptop$ git push desktop HEAD:incomming
and then
  desktop$ git merge incomming

The push does not disturb the worktree on the desktop, and the merge is done manually on the receiving machine.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Junio C Hamano· Jan 17, 2012, 00:12 UTC · re: Matthieu Moy · lore

Re: Commit changes to remote repository

Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:
Show 10 quoted lines
> Carlos Martín Nieto <cmn@elego.de> writes:
>
>> You're trying to push to a non-bare repository and change the
>> currently active branch, which can cause problems, so git isn't
>> letting you. There's an explanation of bare and non-bare at
>> http://bare-vs-nonbare.gitrecipes.de/ but the short and sweet is that
>> you should init the repo you want to use as the central point with
>> --bare and do modifications locally and then push there.
>
> An alternative is to push to a temporary, non-checked-out branch.

Or more generally, treat such a push as if you are pulling in the opposite direction. So in this example,

Show 7 quoted lines
> I sometimes do
>
>   laptop$ git push desktop HEAD:incomming
>
> and then
>
>   desktop$ git merge incomming

you pretend as if you are running "git pull" on your desktop in order to integrate the work done on your laptop. If you did

    desktop$ git pull laptop

you would store where the branches on the laptop are in the remote tracking branches for "laptop" remote in your desktop's repository.

So a good way to simulate that would be:
    laptop$ git push desktop master:refs/remotes/laptop/master
and then run:
    desktop$ git merge laptop/master
> The push does not disturb the worktree on the desktop, and the merge is
> done manually on the receiving machine.

← back to recent threads