Git flow post-initialization issue recovery
Asked by Walter Stanish:

I recently removed my **development** branch using *git branch -D development* in order to clear some commits it had that I did not want to preserve between feature commits.

The result was that finishing the (still present and active) feature branch I had open through the **Git Flow** button caused a complaint that **git flow** had not yet been initialized (it had).

This resulted in the rather annoying need to track down its real location within the SourceTree.app/Contents/ hierarchy and run **git flow init** again by hand.

Ideally Source Tree should automatically attempt to recover from detectable and straightforward **git flow init** issues such as this, saving people the lengthy run-around.


Answers:
author: KieranA
body: Hi Walter,

With git flow the idea is that you don't manually create/delete branches yourself, you solely rely on git flow to do this. Upon deleting branches git flow will definitely get confused as it's expecting the branches it manages itself to be present. If they're not then it assumes git flow hasn't been initialised. This isn't a SourceTree thing, you'll probably find the exact same error is returned if you try to do the same thing in the terminal.

We'd love to be able to automatically recover from cases like this, but git flow creates branches and it may have been a case of an accidental removal of a branch. We never want to make any assumptions about the users' particular situation otherwise we could do damage to their repository, this is why the user explicitly makes the decision to initialise their git flow repository.

Hopefully that helps, if you've got any more questions or comments feel free to fire away!


author: Steve Huckle
body: If you go to Sourcetree Settings via the gear icon on the right-hand side of the app', then click on Edit Config File, you'll see what branches etc. gitflow expects. In your case, you could have probably just recreated the local development branch, and gitflow would have worked as expected.


author: johnbarnaby
body: @Kieran Senior, so my take on this and on using SourceTree in general and SourceTree GitFlow is to execute all commands within and using the SourceTree.app and not to execute commands from the command line to prevent these types of inconsistencies which makes sense, but it takes a little getting used to especially when starting to use the SourceTree.app in your workflow, but fortunately the learning curve seems to not be too steep.

comments: author: KieranA
body: The only reason we say to do it from within SourceTree is because people often use different scripts from the one SourceTree uses which creates inconsistencies. It's not because we're trying to coerce users into using SourceTree.

Technically you could do it from both the terminal and from SourceTree provided your git-flow configurations matched so the branch prefixes matched correctly. Otherwise, one script would create a different naming convention to the other meaning the terminal and SourceTree would produce different output for the same function.

Hope that helps


author: johnbarnaby
body: @Kieran Senior, thanks for the clarification which makes sense from my previous comment.


Tags: git-flow