Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
+7 votes
2 views
in DevOps and Agile by (29.3k points)
edited by

Let's say we have the following situation in git:

A created repository:

mkdir GitTest2

cd GitTest2

git init

Some modifications in the master take place and get committed.

echo "On Master" > file

git commit -a -m "Initial commit"

Feature1 branched off master and some work is done:

git branch feature1

git checkout feature1

echo "Feature1" > featureFile

git commit -a -m "Commit for feature1"

Meanwhile, a bug is discovered in the master-code and a hotfix-branch is established

git checkout master

git branch hotfix1

git checkout hotfix1

The bug is fixed in the hotfix branch and merged back into the master (perhaps after a pull request/code review):

echo "Bugfix" > bugfixFile

git commit -a -m "Bugfix Commit"

git checkout master

git merge --no-ff hotfix1

Development on feature1 continues:

git checkout feature1

Now my question: Say I need the hotfix in my feature branch, maybe because the bug also occurs there. How can I achieve this without duplicating the commits into my feature branch? I want to prevent to get two new commits on my feature branch which have no relation to the feature implementation. This especially seems important for me if I use Pull Requests: All these commits will also be included in the Pull Request and have to be reviewed although this has already been done (as the hotfix is already in the master).

I can not do a git merge master --ff-only: "fatal: Not possible to fast-forward, aborting.", but I am not sure if this helped me.

1 Answer

+10 votes
by (50.2k points)
edited by

For this type of question, you should be able to rebase your branch on master 

git checkout feature1

git rebase master

There you can manage all conflicts When you get to the commits with the BugFixes, git will say that there were no changes and that maybe they were already applied. You then continue the rebase (while skipping the commits already in master) with

git rebase --skip

If you perform a git log on your feature branch, you'll see the bugfix commit appear only once, and in the master portion.

Refer: https://git-scm.com/docs/git-rebase

Please go through the tutorial below all your doubts regarding git will be resolved.

Git merge master into branch
Intellipaat-community
by (29.3k points)
git rebase --skip done the magic for me.

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...