How does one split a branch from master

Salutations everyone,

I have a somewhat strange problem with my repo. Initial I only had the master branch to commit to, however after I completed a functional version of my application I decided to create a develop branch to continue developing but leave the working version untouched in master until I felt like merging it.

  • Git: creating a filesystem state of a previous commit
  • Git and KDevelop
  • Internal Error 500 in Openshift and Python without a traceback
  • GIT post-receive hook to deploy appears to not be working
  • git error: cannot stat <filename> : Protocol error
  • clone git repo to a non-empty folder
  • Currently (using gitk --all) my git log graph looks like this:

                                 tag 
                                  |
    *----*-----*-----*-----*------*------*------*         master & develop
                                         \       \
                                          --------*----*  develop (HEAD)
    

    I am unsure as to what I did to cause this, below are the steps I took to creating the develop branch:

    $ git checkout develop
    $ vim example.txt
    $ git add .
    $ git commit -m "first file in develop"
    $ git push origin develop 
    

    After this I countinued on the develop branch until I took a look at gitk.

    What I want (and think to be the correct/health way of using git branches) is:

                                tag
                                 |      
    *----*-----*-----*-----*-----*-----*               master
                                        \
                                         *-----*-----* develop (HEAD)
    

    What do I need to do to get my repo to look similar to the diagram above?

    EDIT #1:

    Output from git reflog for develop:

    54d8daf HEAD@{0}: reset: moving to HEAD@{15}
    45dcaa7 HEAD@{1}: rebase finished: returning to refs/heads/develop
    45dcaa7 HEAD@{2}: rebase: added another sanity check for cli parameters
    f3b0f8b HEAD@{3}: rebase: I am working on getting the console improved, this including better color, and more cammand options
    8c48bab HEAD@{4}: checkout: moving from develop to 8c48babb10ec2f8f28f364ce57b5095cb080c133^0
    54d8daf HEAD@{5}: checkout: moving from master to develop
    8c48bab HEAD@{6}: checkout: moving from develop to master
    54d8daf HEAD@{7}: rebase: aborting
    3bf3f64 HEAD@{8}: commit: rebase
    6aa82d8 HEAD@{9}: rebase: added another sanity check for cli parameters
    a9be651 HEAD@{10}: rebase: I am working on getting the console improved, this including better color, and more cammand options
    8c48bab HEAD@{11}: checkout: moving from develop to 8c48babb10ec2f8f28f364ce57b5095cb080c133^0
    54d8daf HEAD@{12}: rebase: aborting
    7890b76 HEAD@{13}: rebase: added another sanity check for cli parameters
    46847d7 HEAD@{14}: rebase: I am working on getting the console improved, this including better color, and more cammand options
    8c48bab HEAD@{15}: checkout: moving from develop to 8c48babb10ec2f8f28f364ce57b5095cb080c133^0
    54d8daf HEAD@{16}: commit: changed the how function, it seems I was right, wc counts all lines regardless of readable symbols or not.
    13d35ed HEAD@{17}: commit: am working on the how function (should be trivial, but I have a bad feeling)
    852fb68 HEAD@{18}: commit: I have added some more commands (thought not fully implemented), but more specifically I have changed the pattern matching
    33dfc9f HEAD@{19}: commit (merge): change some output settings, asthetics and such. I am working on getting more command options for list previous lin
    a248465 HEAD@{20}: commit (amend): added another sanity check for cli parameters
    f0ca508 HEAD@{21}: commit (amend): added another sanity check for cli parameters
    9e24e91 HEAD@{22}: commit: added another sanity check for cli parameters
    0194cab HEAD@{23}: commit: I am working on getting the console improved, this including better color, and more cammand options
    8c48bab HEAD@{24}: checkout: moving from master to testing
    8c48bab HEAD@{25}: commit: I think I have wroked out all of the import bugs, the rest is really just esthetics, welcome version 1
    b306d9f HEAD@{26}: commit: as it turns out it was easier then I thought, plus I fixed an incorrect append method
    8445a25 HEAD@{27}: commit: seems I miss understood how bash case statments handles regex, or should I say pathname expansion matching
    9fc5132 HEAD@{28}: commit: lol, totally forgot to use the function 'run' to get things going
    ee2a2c7 HEAD@{29}: commit: seems I haven't yet figured out how to correctly parse cli args...
    bb0fd28 HEAD@{30}: commit: fixed incorrect sanity check
    eb3db1d HEAD@{31}: commit: have reached a stage I could refer to a working test system, which is what I am going to do.
    4bfd53b HEAD@{32}: commit: added a lot more colours (am using a list from arch-wikis), incorporated much better error handling
    2d9b598 HEAD@{33}: commit: getting there part 1
    0edfcae HEAD@{34}: commit: output functions so far
    06130a7 HEAD@{35}: commit: modularized two printing function into a seperate script
    e0033b8 HEAD@{36}: commit (initial): used some functions from previous bash script, maybe I should create a generic script for text output...?
    

    In error, I tried to do a rebase, which failed on every merge attempt. Using git diff on different checkouts of files (--theirs and --ours) showed no difference between remote and local. So I reset head back to commit HEAD@{15}.

    EDIT #2:
    I am sorry for the confusion I might have caused, however in diagram 1, ‘master & develop’ indicate that both branches (master and develop) are combined into a single ‘stream’. I hope that makes more sense.

    EDIT #3:

    Output from git log master --pretty=oneline

    8c48babb10ec2f8f28f364ce57b5095cb080c133 I think I have wroked out all of the import bugs, the rest is really just esthetics, welcome version 1
    b306d9f58c3ebab03364c4381754bc87db9e7f2d as it turns out it was easier then I thought, plus I fixed an incorrect append method
    8445a258fc388eba5b920de57b1f390623da87a0 seems I miss understood how bash case statments handles regex, or should I say pathname expansion matching
    9fc5132c30bdf2ab143ad046493326ba63e4300d lol, totally forgot to use the function 'run' to get things going
    ee2a2c7ff69498a80e9fc5f36cc340f6e1b95bcb seems I haven't yet figured out how to correctly parse cli args...
    bb0fd28c89a0c16c379774b7fc5768a4160d6852 fixed incorrect sanity check
    eb3db1d055b45793fb9a3fd5f884926687f7b8dd have reached a stage I could refer to a working test system, which is what I am going to do.
    4bfd53b3af85d82aea11871a0ddb7f9d583cfb73 added a lot more colours (am using a list from arch-wikis), incorporated much better error handling
    2d9b598d77e2b62611dfd2e42b183d0262880014 getting there part 1
    0edfcae88e6eae66de4fae1788433d83b90a1c37 output functions so far
    06130a7288ce26b4a2235864f7cd5b48a35dcea6 modularized two printing function into a seperate script
    e0033b8f440f2ffb7b9a120f5a9be9ea167e1e30 used some functions from previous bash script, maybe I should create a generic script for text output...?
    

    Output for git log develop --pretty=oneline

    54d8daf475a5e1108cd6345850245db2d0e6fd80 changed the how function, it seems I was right, wc counts all lines regardless of readable symbols or not.
    13d35ed979de3518eca26961f3be4bb0b7d8de03 am working on the how function (should be trivial, but I have a bad feeling)
    852fb68b8ca929e1156e38e2a58a12f07bd9aaa5 I have added some more commands (thought not fully implemented), but more specifically I have changed the pat
    33dfc9f187a54dc7234c9ca31bee91eef7c89a98 change some output settings, asthetics and such. I am working on getting more command options for list previo
    a2484654eff741f4c625f8cb097fbb92f6ac8b9b added another sanity check for cli parameters
    9e24e9157157f128f75b3d7859875d06d33137bd added another sanity check for cli parameters
    0194cab8af66656bb9fe83c919409354f6d12edc I am working on getting the console improved, this including better color, and more cammand options
    8c48babb10ec2f8f28f364ce57b5095cb080c133 I think I have wroked out all of the import bugs, the rest is really just esthetics, welcome version 1
    b306d9f58c3ebab03364c4381754bc87db9e7f2d as it turns out it was easier then I thought, plus I fixed an incorrect append method
    8445a258fc388eba5b920de57b1f390623da87a0 seems I miss understood how bash case statments handles regex, or should I say pathname expansion matching
    9fc5132c30bdf2ab143ad046493326ba63e4300d lol, totally forgot to use the function 'run' to get things going
    ee2a2c7ff69498a80e9fc5f36cc340f6e1b95bcb seems I haven't yet figured out how to correctly parse cli args...
    bb0fd28c89a0c16c379774b7fc5768a4160d6852 fixed incorrect sanity check
    eb3db1d055b45793fb9a3fd5f884926687f7b8dd have reached a stage I could refer to a working test system, which is what I am going to do.
    4bfd53b3af85d82aea11871a0ddb7f9d583cfb73 added a lot more colours (am using a list from arch-wikis), incorporated much better error handling
    2d9b598d77e2b62611dfd2e42b183d0262880014 getting there part 1
    0edfcae88e6eae66de4fae1788433d83b90a1c37 output functions so far
    06130a7288ce26b4a2235864f7cd5b48a35dcea6 modularized two printing function into a seperate script
    e0033b8f440f2ffb7b9a120f5a9be9ea167e1e30 used some functions from previous bash script, maybe I should create a generic script for text output...?
    

    Output for git log master...develop

    commit 54d8daf475a5e1108cd6345850245db2d0e6fd80
    Author: Hans 
    Date:   Thu Jun 21 21:27:14 2012 +0200
    
        changed the how function, it seems I was right, wc counts all lines regardless of readable symbols or not.
    
    commit 13d35ed979de3518eca26961f3be4bb0b7d8de03
    Author: Hans 
    Date:   Thu Jun 21 21:09:44 2012 +0200
    
        am working on the how function (should be trivial, but I have a bad feeling)
    
    commit 852fb68b8ca929e1156e38e2a58a12f07bd9aaa5
    Author: Hans 
    Date:   Thu Jun 21 20:58:16 2012 +0200
    
        I have added some more commands (thought not fully implemented), but more specifically I have changed the pattern matching slightly, it is now a r
    
    commit 33dfc9f187a54dc7234c9ca31bee91eef7c89a98
    Merge: a248465 9e24e91
    Author: Hans 
    Date:   Thu Jun 21 20:42:56 2012 +0200
    
        change some output settings, asthetics and such. I am working on getting more command options for list previous lines and such
    
    commit a2484654eff741f4c625f8cb097fbb92f6ac8b9b
    Author: Hans 
    Date:   Thu Jun 21 20:23:52 2012 +0200
    
        added another sanity check for cli parameters
    
    commit 9e24e9157157f128f75b3d7859875d06d33137bd
    Author: Hans 
    Date:   Thu Jun 21 20:23:52 2012 +0200
    
        added another sanity check for cli parameters
    
    commit 0194cab8af66656bb9fe83c919409354f6d12edc
    Author: Hans 
    Date:   Thu Jun 21 20:06:02 2012 +0200
    
        I am working on getting the console improved, this including better color, and more cammand options
    

  • Hosting a Repository website on Github not working?
  • Gradle module and git submodule
  • Atlassian Stash and git SSL issue
  • Gedit with Git in Windows?
  • Removing multiple files from a Git repo that have already been deleted from disk
  • how to save the the “repeating” rebase step?
  • 3 Solutions collect form web for “How does one split a branch from master”

    You can use reflog: git reflog for any branch to look at history for that ref and then just make git reset --hard HEAD@{INDEX_HERE} to revert changes for that branch.

    First diagram is show a situation when you have made a commit in the master branch and then made a git pull inside develop branch. git pull will merge tracking branch (master) into the current one (develop).

    If you can publish your reflog for branches master and develop then we can check it.

    What do I need to do to get my repo to look similar to the diagram above?

    To create the branch ‘develop’ from ‘master’, I would follow the instructions given in the git manual: “To create a branch and switch to it at the same time, you can run the git checkout command with the -b switch”.

    In your case, Hans, you could do the following (assuming ‘master’ is in the remote ‘origin’):

    # checkout and pull latest from master
    git checkout master
    git fetch origin
    git pull origin master
    
    # create the develop branch
    git checkout -b develop
    

    Now the ‘master’ and ‘develop’ branches are distinct and future commits should make your commit history look like the correct/healthy diagram that you want to achieve.

    As it turns out, I misunderstood how branches work in git. This was the fundamental problem. There was no problem at all with how my repo is setup.

    However as Alexander pointed out to me, there is an abnormal merge of a248465 9e24e91, thus creating this ‘double commit’ shown in diagram 1. These commits are actually the same commit but with different SHA1 hashes. I believe this was caused to due to me having incorrectly applied a git commit --amend.

    The solution to remove them was to rebase the develop branch and remove commit 9e24e91 from the history.

    Thanks everyone for your help!

    Git Baby is a git and github fan, let's start git clone.