threads / discuss / 27664

pushing a branch without merging

Subject: pushing a branch without merging

## tl;dr

4 messages between Jun 20, 2011 and Jun 20, 2011.

replies: 3people: 3as markdown or json

Carlo Trimarchi· Jun 20, 2011, 14:11 UTC · lore

Hi, I'm managing a website with Git. I work on my local machine and push changes to a bare git repository on a remote server. Then there there is a hook to pull those changes in a directory with the live website. I use the server only for the development version of the site and it happens that when I'm working on a branch feature I want to show to others what I'm doing.

So, on the local machine I can easily create a new branch, but I don't know how to push what I modified in the new branch without affecting the master branch. What am I missing?

Carlo Trimarchi· Jun 20, 2011, 14:56 UTC · lore

Re: pushing a branch without merging

2011/6/20 Massimo Manca <massimo.manca@micronengineering.it>:
Show 8 quoted lines
> then you edit and add files on the newly branch, so as usually you have
> to use:
>    git add .
>    git commit -m "what I change on this branch" -a
>
> When you have to update the remote then staying on experimental branch
> you can:
>    git push

This is exactly what I did, but on the server it showed the old version. This is what appears when commiting:

➜  website git:(experimental) ✗ git commit -a -m "commit message"
[mario_style 7764c96] commit message
 2 files changed, 315 insertions(+), 204 deletions(-)
 rewrite index.html (88%)
➜  website git:(experimental) ✗ git push website
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 451 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
To ssh://myserver.bla.com/home/user/website.git
   f93d62f..eb8e369  master -> master

I'm in the experimental branch, but in the end it shows master -> master. Maybe that is what it is supposed to show, not sure.

Carlos Martín Nieto· Jun 20, 2011, 15:03 UTC · re: Carlo Trimarchi · lore

Re: pushing a branch without merging

On Mon, Jun 20, 2011 at 04:56:12PM +0200, Carlo Trimarchi wrote:
Show 29 quoted lines
> 2011/6/20 Massimo Manca <massimo.manca@micronengineering.it>:
> 
> > then you edit and add files on the newly branch, so as usually you have
> > to use:
> >    git add .
> >    git commit -m "what I change on this branch" -a
> >
> > When you have to update the remote then staying on experimental branch
> > you can:
> >    git push
> 
> This is exactly what I did, but on the server it showed the old version.
> This is what appears when commiting:
> 
> ➜  website git:(experimental) ✗ git commit -a -m "commit message"
> [mario_style 7764c96] commit message
>  2 files changed, 315 insertions(+), 204 deletions(-)
>  rewrite index.html (88%)
> ➜  website git:(experimental) ✗ git push website
> Counting objects: 7, done.
> Delta compression using up to 8 threads.
> Compressing objects: 100% (4/4), done.
> Writing objects: 100% (4/4), 451 bytes, done.
> Total 4 (delta 2), reused 0 (delta 0)
> To ssh://myserver.bla.com/home/user/website.git
>    f93d62f..eb8e369  master -> master
> 
> I'm in the experimental branch, but in the end it shows master ->
> master. Maybe that is what it is supposed to show, not sure.

By default, git-push only pushes matching branches (those that exist both in the local and remote repos). What you want to do might be

   git push website experimental

if you want to create the branch 'experimental', or if your deployment system only checks out the 'master' branch, you might find

    git push website experimental:master

useful. In this case you may have to force-push master again, which is not recommended (though in your case it might be fine). You can find more details about how to specify which branches you want to push in the git-push manpage.

Cheers,
   cmn
PJ Weisberg· Jun 20, 2011, 15:51 UTC · re: Carlos Martín Nieto · lore

Re: pushing a branch without merging

On Monday, June 20, 2011, Carlos Martín Nieto <cmn@elego.de> wrote:
Show 7 quoted lines
> if you want to create the branch 'experimental', or if your deployment
> system only checks out the 'master' branch, you might find
>
>     git push website experimental:master
>
> useful. In this case you may have to force-push master again, which is
> not recommended (though in your case it might be fine).

FYI, that *replaces* the remore master branch with the local experimental branch. If you just want someone else to be able to be able to 'git pull website experimental', what you want to do is 'git push website experimental' or 'git push website --all'.

-- 
-PJ

← back to recent threads