On 5 November 2016 at 08:39, Ryan Schmidt wrote:
> On Nov 4, 2016, at 12:39 AM, David Bariod wrote:
>
>> Personnally, I would just commit such change. It is cheap, can be reworked 
>> later and be ketp safe in a private remote repository in case of disaster.
>> With git there are no reason to not commit event not ready yet change set.
>
> Coming from a Subversion background, where you commit when you are finished 
> with your work and not before, this reversal is very difficult for me to 
> grasp.
>
> I don't know how to rework a commit later.
>
> I don't know how to, let's say, commit my unfinished work on curl, then make 
> changes to libpng and commit them, and then push only the finished libpng 
> commit and not the unfinished curl commit to upstream.

# create a new branch for temporary work on curl
git checkout -b playing-with-curl
# same as:
# git branch playing-with-curl && git checkout playing-with-curl

#add temporary changes
git add net/curl/Portfile
git commit
<enter the commit message>

# you could (optionally) do your libpng-related work in a branch as well
# users without commit rights or any developer wanting to submit a pull request
# for review before committing have to do this anyway;
# you you do this in master
git checkout -b fix-for-libpng
# add and commit changes
git add graphics/libpng/Portfile
git add graphics/libpng/file/the-patch-you-just-added.diff
# review changes
git diff --cached
git commit
<enter the commit message>

# go to master and pull the latest changes
git checkout master
git pull --rebase

# if you did your work on libpng in master, you are then set

# else go to your libpng branch and rebase the changes on top of the
latest master
git rebase master
# I don't want to give wrong instructions here, but I suspect that even
# "git push origin master" works in this case


Then, when you want to resume your work on curl:

git checkout playing-with-curl
<do your stuff>
git add net/curl/Portfile
git commit
<do more stuff>
git add net/curl/files/some-fix.patch
git commit

# at any point you can also do
git rebase master

Now you have three or more commits. Check with "git log". You can
merge them with

git rebase -i HEAD~3

This will open a new editor and you have to replace "pick" with "squash". See
    http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
or google for other examples.

Mojca
_______________________________________________
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to