SourceTree 1.6.4.0 on Windows 7.
Let's say the following is my starting point:
C <- master / - A - B <- topic
I want to rebase topic onto master.
My goal is to have:
C - A - B ^ ^ master topic
but I end up with:
I can then do
git push origin topic -f
and I get the intended result, but what is the proper way to do this in SourceTree?
The Golden Rule of Rebasing reads: “Never rebase while you're on a public branch.” This way, no one else will be pushing other changes, and no commits that aren't in your local repo will exist on the remote branch.
Checkout to the desired branch you want to rebase. Now perform the rebase command as follows: Syntax: $git rebase <branch name>
The purpose of rebase is make your commits look as if they were changes to the branch you rebase onto. So the most logical way is to incorporate merge conflicts into these commits. No additional commits is required thus.
You can enable force push in Tools/Options/Git/Enable Force Push. After it is enabled you can check "Force Push" check box in the "Push" dialog.
You have to do a force push, because topic branch is already published and you are rewriting history. Commits A and B from origin/topic are removed if you rebase.
You should make a merge if you don't want to do a force push, specially if you have a team members already working on topic.
You can't do a force push with SourceTree for Windows yet (see answers at atlassian forums). You can vote for this feature here: https://jira.atlassian.com/browse/SRCTREEWIN-338
Go to SourceTree/Preferences/Advanced
and click the 'Allow force push' checkbox at the top of the 'Advanced' dialog.
This allows for the ability to click Force Push in the push dialog whilst pushing a commit.
Previous versions had this at SourceTree/Preferences/General
toward the bottom of the 'General' dialog.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With