[kwlug-disc] Advanced(?) Git usage question

Jonathan Poole jpoole at digitaljedi.ca
Thu Apr 17 07:36:36 EDT 2014


Ugh.  It’s early, your branches, and describing the problem is making me confused.

In all honesty, I think you would benefit from git-flow (http://nvie.com/posts/a-successful-git-branching-model/_, with some sort of web (bitbucket, github, gitlab, etc) front end so you can visually see transactions.  Hardcore and only want the console? no problem add this to your git config
git config --global --add alias.lol "log --graph --decorate --pretty=oneline --abbrev-commit --all"

then you can issue a git lol.

This will give you a visual eyeglass into when what merged, and who did what, etc.

I think you should have a ‘develop’ branch which is where your linux box gets deployed from.  Each ‘feature’ you develop should be a branch based off of develop such as feature/JIRA_NUM-my_new_cool_button/
write some code
maybe make a few commits
add a library
commit
add an image
commit
finito!
git flow feature publish feature/JIRA_NUM-my-new-cool-button./

Feature published

When happy, merge your feature branch into develop
Deploy develop to ‘environment’

When ready for a release, either create a release/release-1 branch, or merge from develop into master

I THINK the problem/trick you are describing below is that you need to rebase from another branch, in gitflow your rewind branches would be feature branches, developers merge into ‘develop' when they are ‘feature’ complete. 

Hope this sort of helps, I’m just having a hard time drawing a picture in my head of when events occurred, what events need to be merged with what.



On Apr 17, 2014, at 12:00 AM, John Johnson <jvj at golden.net> wrote:

> Earlier I asked:
> What happens if I have modified a file in one of the branches?
> Say it is a file accessible through FF with /localhost/projectName/indexTest.php
> 
> I think I have an answer.
> $ git checkout rewind_2f7c343 (switch to branch)
> test in FF: /localhost/projectName/indexTest.php
> behaviour is w (this is a problem)
> 
> modify file indexTest.php
> w/o commit
> 
> test in FF: /localhost/projectName/indexTest.php
> behaviour is x (problem of w is gone)
> 
> $ git checkout rewind_f9a4506 (switch to branch)
> test in FF: /localhost/projectName/indexTest.php
> behaviour is x (was y + w before mods)
> 
> $ git checkout rewind_ad95724 (switch to branch)
> test in FF: /localhost/projectName/indexTest.php
> behaviour is x (was z + w before mods)
> 
> behaviour x is from the uncommited (staged?) file modified under rewind_2f7c343
> 
> $ git checkout rewind_2f7c343 (switch to branch)
> $ git commit -a
> to commit changes to indexTest.php
> 
> test in FF: /localhost/projectName/indexTest.php
> behaviour is x (problem of w is gone)
> 
> $ git checkout rewind_f9a4506 (switch to branch)
> test in FF: /localhost/projectName/indexTest.php
> behaviour is y + w (problem w is present)
> 
> $ git checkout rewind_ad95724 (switch to branch)
> test in FF: /localhost/projectName/indexTest.php
> behaviour is z + w (problem w is present)
> 
> Now, the trick I have at hand is to merge the changes in indexTest.php made in rewind_2f7c343 with the other branches.
> And do this so that only the problem with behaviour w is addressed, i.e. without affecting the other behaviours present in the other branches.
> 
> Learning by doing.
> Hopefully, in the right direction.
> 
> Thanks
> John Johnson
> 
> 
> On 2014-04-16 22:16, John Johnson wrote:
>> 
>> The question below (re: git 'pull' of a specific file [w/o overwriting current]) remains at least for me, open.
>> 
>> But I now, have one or more advanced (I think) questions.
>> 
>> My environment: Windows XP on one PC. Linux Ubuntu on another. The Linux PC is the intended the deployment target.
>> Development is on the Windows XP PC under XAMPP. Git for Windows is installed on the Windows PC. (Not yet on the Linux PC.)
>> 
>> It had to happen. Somewhere in the past couple of days, and after a few Git commits things went sideways.
>> And I find myself having to do, what I call a 'rewind', i.e. a git branch to an earlier commit (maybe more than one branch).
>> 
>> A week or two ago, the Master was branched to newBranch, which became the main development path. The Master is now dated and useless.
>> (newBranch? OK OK so I am not very creative with the naming!)
>> 
>> And now, while under the branch newBranch, I have executed one or more commands like:
>> $ git checkout -b rewind_f9a4506 f9a4506
>> Where f9a4506 is the git assigned commit ID.
>> (rewind_f9a4506? Again, I am not being creative with the branch naming, but at least this one carries more information than 'newBranch'.)
>> 
>> When the branch command is executed I see the message:
>> Switched to a new branch 'rewind_f9a4506'
>> 
>> This is all well and good in the Git bash window.
>> 
>> And I can, for various reasons, navigate between the branches with the commands:
>> $ git checkout newBranch
>> $ git checkout rewind_f9a4506
>> $ git checkout rewind_ad95724
>> (Note: I am exploring and have done no mods or commits in these branches.)
>> 
>> It appears that when XAMPP and using FF,  /localhost/projectName/ into the browsers address bar brings up the index.php for the branch currently active in the Git bash window.
>> 
>> Is this a correct assumption?
>> I can understand the 'view' of the files as given through the Git bash window. But I am not clear as to how Windows apps, e.g. a text editor, and XAMPP find the files associated with the branch currently active in he Git bash window.
>> 
>> What happens if I have modified a file in one of the branches? 
>> Say it is a file accessible through FF with /localhost/projectName/indexTest.php
>> 
>> I have not yet got to the stage where I will update the Master or newBranch with one of the branches.
>> Or create and update a remote repo, i.e. on the Linux PC.
>> 
>> As said earlier: tips / comments / guidelines / advice / etc. from those who have gone before me are welcome.
>> 
>> Thanks
>> John Johnson
>> 
>> On 2014-04-16 11:33, John Johnson wrote:
>>> 
>>> This is definitely, not an an "advanced" question.
>>> But it is one for which I could not an answer on the Google or in Git tuts.
>>> 
>>> Using Git, can one, without creating a branch, pull a file from an earlier commit?
>>> And (asking a lot) store the pulled file in a place other than the current working directory?
>>> 
>>> Unless I need to do some more reading, git commands, revert pull and checkout all seem to operate on the repo as a whole and not on individual files.
>>> 
>>> Tips / comments / guidelines / advice / etc. from those who have gone before me are welcome.
>>> 
>>> Thanks
>>> JohnJ
>>> 
>>> 
>>> 
>>> On 2014-04-15 21:44, Chris Frey wrote:
>>>> 
>>>> On Tue, Apr 15, 2014 at 08:47:41PM -0400, John Johnson wrote:
>>>>   
>>>>> A tip on Git that I read somewhere was to develop a consistent style
>>>>> in the git commit messages, e.g. git -am [message text], so as to
>>>>> make subsequent searches easier. For example, if one was using an
>>>>> issue tracking system with issues SCR 1024 SCR 2031 SCR 112 being
>>>>> active and the commit was to combine repairs that addressed these
>>>>> issues, the commit message could be: git commit -am "issues: SCR
>>>>> 1024 SCR 2031 SCR 112" or similar.
>>>>>     
>>>> That "git commit -am" worries me. :-)  My usual process is:
>>>> 
>>>> 	git add -p
>>>> 	git commit	# with editor
>>>> 
>>>> This allows more detailed commit messages than just a single line.
>>>> And the git-add with '-p' makes sure you only commit the changes you
>>>> intend.  You can also break your current workspace into multiple
>>>> commits, making them small and logical.
>>>> 
>>>> Also, in git, the first line is special, as you probably know.
>>>> But there exists a --grep option in commands such as git-log, for
>>>> searching commit messages.  For example, if your commit message said:
>>>> 
>>>> 	driver: fixed off-by-one error in buffer init
>>>> 
>>>> 	Changed code to use sizeof() instead of hard coded value.
>>>> 
>>>> 	Fixes SCR 1024, SCR 2031, SCR 112
>>>> 
>>>> Now, if you do:
>>>> 
>>>> 	git shortlog
>>>> 
>>>> you get a nice brief description of your changes, yet you still have
>>>> your bug tracking IDs in the commits, so that this is possible:
>>>> 
>>>> 	git log --grep="SCR 2031"
>>>> 
>>>> - Chris
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> kwlug-disc mailing list
>>>> kwlug-disc at kwlug.org
>>>> http://kwlug.org/mailman/listinfo/kwlug-disc_kwlug.org
>>>> 
>>>> 
>>>> -----
>>>> 
>>>> Checked by AVG - www.avg.com
>>>> Version: 2014.0.4355 / Virus Database: 3882/7345 - Release Date: 04/14/14
>>>> 
>>>> 
>>>>   
>>> 
>>> 
>>> _______________________________________________
>>> kwlug-disc mailing list
>>> kwlug-disc at kwlug.org
>>> http://kwlug.org/mailman/listinfo/kwlug-disc_kwlug.org
>>>   
>>> 
>>> 
>>> 
>>> Checked by AVG - www.avg.com
>>> Version: 2014.0.4355 / Virus Database: 3882/7349 - Release Date: 04/15/14
>>> 
>> 
>> 
>> _______________________________________________
>> kwlug-disc mailing list
>> kwlug-disc at kwlug.org
>> http://kwlug.org/mailman/listinfo/kwlug-disc_kwlug.org
>>   
>> 
>> 
>> 
>> Checked by AVG - www.avg.com
>> Version: 2014.0.4355 / Virus Database: 3882/7354 - Release Date: 04/16/14
>> 
> 
> _______________________________________________
> kwlug-disc mailing list
> kwlug-disc at kwlug.org
> http://kwlug.org/mailman/listinfo/kwlug-disc_kwlug.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://kwlug.org/pipermail/kwlug-disc_kwlug.org/attachments/20140417/e58a42c8/attachment.htm>


More information about the kwlug-disc mailing list