Reputation: 269
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.
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
Upvotes: 2
Views: 1055
Reputation: 269
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!
Upvotes: 0
Reputation: 293
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.
Upvotes: 1
Reputation: 6092
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.
Upvotes: 1