From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Branchaud Subject: [PATCH 2/2] Teach the --no-ff option to 'rebase -i'. Date: Wed, 24 Mar 2010 11:41:01 -0400 Message-ID: <1269445261-2941-3-git-send-email-marcnarc@xiplink.com> References: <7vzl1yd5j4.fsf@alter.siamese.dyndns.org> Cc: Johannes Sixt , Jonathan Nieder , Junio C Hamano , Marc Branchaud To: git@vger.kernel.org X-From: git-owner@vger.kernel.org Wed Mar 24 16:56:25 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1NuSwS-0007xE-GB for gcvg-git-2@lo.gmane.org; Wed, 24 Mar 2010 16:56:25 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756440Ab0CXPio (ORCPT ); Wed, 24 Mar 2010 11:38:44 -0400 Received: from 208-85-112-101.zerofail.com ([208.85.112.101]:39149 "EHLO farnsworth.xiplink.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1756293Ab0CXPin (ORCPT ); Wed, 24 Mar 2010 11:38:43 -0400 Received: from rincewind (rincewind.xiplink.com [192.168.1.136]) by farnsworth.xiplink.com (8.14.2/8.14.2/Debian-2build1) with ESMTP id o2OFcHdd012149; Wed, 24 Mar 2010 11:38:18 -0400 Received: by rincewind (Postfix, from userid 1000) id 93C4333666D; Wed, 24 Mar 2010 11:41:03 -0400 (EDT) X-Mailer: git-send-email 1.7.0.3.1.g59254.dirty In-Reply-To: <7vzl1yd5j4.fsf@alter.siamese.dyndns.org> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: This option tells git-rebase--interactive to cherry-pick all the commits in the rebased branch, instead of fast-forwarding over any unchanged commits. --no-ff offers an alterntive way to deal with reverted merges. Instead of "reverting the revert" you can use "rebase -i --no-ff" to recreate the branch with entirely new commits (they're new because at the very least the committer time is different). This obviates the need to revert the reversion, as you can re-merge the new topic branch directly. Added an addendum to revert-a-faulty-merge.txt describing the situation and how to use --no-ff to handle it. --force-rebase also provides this alternative with non-interactive rebase, so updated rebase's man page to mention it. Signed-off-by: Marc Branchaud --- Documentation/git-rebase.txt | 23 +++++++++- Documentation/howto/revert-a-faulty-merge.txt | 61 +++++++++++++++++++++++++ git-rebase--interactive.sh | 9 +++- t/t3404-rebase-interactive.sh | 36 +++++++++++++-- 4 files changed, 121 insertions(+), 8 deletions(-) diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 823f2a4..ca06c55 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -274,9 +274,15 @@ which makes little sense. -f:: --force-rebase:: Force the rebase even if the current branch is a descendant - of the commit you are rebasing onto. Normally the command will + of the commit you are rebasing onto. Normally non-interactive rebase will exit with the message "Current branch is up to date" in such a situation. ++ +You may find this (or --no-ff with an interactive rebase) helpful after +reverting a topic branch merge, as this option recreates the topic branch with +fresh commits so it can be remerged successfully without needing to "reverting +the reversion" (as described in the +link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To]). --ignore-whitespace:: --whitespace=