# Question with git push

3 messages from 2008-12-23 to 2008-12-23. Participants: Paul Vincent Craven, Peter Harris, demerphq.
Thread: https://gitlist.dev/t/16852

## Paul Vincent Craven, 2008-12-23 16:59

Subject: Question with git push
Message-ID: <5591393c0812230859n3b50b1f9k36153f40dd75ff57@mail.gmail.com>
URL: https://gitlist.dev/e/5591393c0812230859n3b50b1f9k36153f40dd75ff57%40mail.gmail.com

```
If I do a 'git push' to another repository, my changes are reverted
the next time that repository is updated, unless I do a hard reset on
the remote repository first. Of course, then I would lose my changes
in the remote repository. What is the correct way of handling this?

A quick example:

mkdir -p RepositoryA/files RepositoryB
cd RepositoryA/files
echo "Test file" > test1.txt
git init
git add .
git commit -a -m "Test Commit 1"
cd ../../RepositoryB
git clone ../RepositoryA/files
cd files
# I want this change to go to RepositoryA
echo "More data" >> test1.txt
git add .
git commit -a -m "Test Commit 2"
git push ../../RepositoryA/files
cd ../../RepositoryA/files
echo "Test file" > test2.txt
git add .
# This commit reverts test1.txt to not have "More data"
git commit -a -m "Test Commit 3" # This reverts test1.txt to not
git diff master^ master

How do I change my commands so I keep the change I made in RepositoryB?

Thanks,

-- 
Paul Vincent Craven

--
Paul Vincent Craven
http://www.cravenfamily.com

```

## Peter Harris, 2008-12-23 17:35

Subject: Re: Question with git push
Message-ID: <eaa105840812230935o63ac7960h728c905da12b8cc0@mail.gmail.com>
URL: https://gitlist.dev/e/eaa105840812230935o63ac7960h728c905da12b8cc0%40mail.gmail.com
In-Reply-To: <5591393c0812230859n3b50b1f9k36153f40dd75ff57@mail.gmail.com>

```
On Tue, Dec 23, 2008 at 11:59 AM, Paul Vincent Craven wrote:
> If I do a 'git push' to another repository, my changes are reverted
> the next time that repository is updated, unless I do a hard reset on
> the remote repository first. Of course, then I would lose my changes
> in the remote repository. What is the correct way of handling this?

Pull from the other side, or push to a branch that you never check
out. Better yet, push to a bare (no work tree) repo you can pull from
both sides.

http://git.or.cz/gitwiki/GitFaq#head-b96f48bc9c925074be9f95c0fce69bcece5f6e73

Peter Harris

```

## demerphq, 2008-12-23 17:37

Subject: Re: Question with git push
Message-ID: <9b18b3110812230937p3c53f778h508746a3df72610e@mail.gmail.com>
URL: https://gitlist.dev/e/9b18b3110812230937p3c53f778h508746a3df72610e%40mail.gmail.com
In-Reply-To: <5591393c0812230859n3b50b1f9k36153f40dd75ff57@mail.gmail.com>

```
2008/12/23 Paul Vincent Craven <paul@cravenfamily.com>:
> If I do a 'git push' to another repository, my changes are reverted
> the next time that repository is updated, unless I do a hard reset on
> the remote repository first.

Or just git checkout -f

> Of course, then I would lose my changes
> in the remote repository. What is the correct way of handling this?

I think the general practice is not to push to non-bare repositories
unless you and the owner of the repository can coordinate things. This
either means you push and then tell them, or they set up a
post-receive hook (and understand the consequences of doing so). Of
course often you are both of these people and coordination is easy.

The post-receive hook would go in .git/hooks and would effectively execute:

  git checkout -f

on push. However this also means that the working directory will be
unilaterally updated every time someone pushes. Not something you want
to do in a truely shared non-bare repo.
Yves


-- 
perl -Mre=debug -e "/just|another|perl|hacker/"

```
